1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

lambdaからRDSにアクセスするときに注意すること

Posted at

RDSの設定はKMSでEncryptして書く

Key Management Service (KMS) からEncrypt用のKeyを作成する (Consoleでできるので詳細割愛)

KMSのAccess権をLambdaのRoleに与える

KMSをLambdaが操作できるように、KMSを使ってDecryptできるPolicyを作成し、LambdaにつけるRoleに付与する

allow-lambda-to-decrypt-policy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:<region>:<user_id>:key/<key_id>
        }
    ]
}

LambdaはRDSと同じVPCを指定する

LambdaにVPCが指定されると、NATを設定しない限り、Internetへ出れなくなるので、RDSがLambdaのVPCの外にあると、指定したRDSのEndpointからresolveした先はPublicのIpとなりInternet経由で接続しようとするので、特に理由がない場合は、同じVPCにして、内部ネットワークでのアクセスにする。

別のVPCである必要がある場合は、Peer Connectionを貼って、RDSに内部IPでアクセスで切るかと思ったが、うまくいかなかったので、なにか設定が必要かも。(特に調べてない)

LambdaにVPCAccessの権限をRoleに与える

VPCを設定すると、LambdaにVPCの権限が必要になる。

AWS managed AWSLambdaVPCAccessExecutionRole という名前のPolicyがあるので、これをLambdaのRoleに付与する(policyのくせに名前がRoleというなんとも分かりづらいもの)

内容は以下:

AWSLambdaVPCAccessExecutionRole
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

Lambdaの設定

Credentialsを環境変数に書き、作成したKMSを指定。
image.png

Encryptボタンを押すと、Encryptされる

image.png

右側の Code をクリックするとLambdaの中でどう使えばいいのかが出てくる

image.png

これで、Lambda関数のConsole上で直接パスワードなどが見れなくなった。

まとめ

  1. KMSの作成
  2. Lambdaのロールには、VPCアクセス、KMS権限の付与をする
  3. Credentialsは環境変数にEncryptされたものを入れる
  4. Credentialsを実際に使用する部分は、Lambdaの関数内でKMSを使ってDecryptして使用する
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?