

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# の Lambda ローテーション関数実行ロールのアクセス許可 AWS Secrets Manager
<a name="rotating-secrets-required-permissions-function"></a>

[Lambda 関数によるローテーション](rotate-secrets_lambda.md) では、Secrets Manager が Lambda 関数を使用してシークレットをローテーションすると、Lambda は [IAM 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)を想定し、これらの認証情報を Lambda 関数のコードに提供します。自動ローテーションの設定方法については、以下を参照してください。
+ [データベースシークレットの自動ローテーション (コンソール)](rotate-secrets_turn-on-for-db.md)
+ [非データベースシークレットの自動ローテーション (コンソール)](rotate-secrets_turn-on-for-other.md)
+ [自動ローテーション (AWS CLI)](rotate-secrets_turn-on-cli.md)

次の例は、Lambda ローテーション関数の実行ロールのインラインポリシーを示しています。実行ロールを作成し、アクセス権限ポリシーをアタッチするには、を参照してください。[AWS Lambda 実行ロール](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)。

**Topics**
+ [Lambda ローテーション関数の実行ロールのポリシー](#rotating-secrets-required-permissions-function-example)
+ [カスタマーマネージドキーのポリシーステートメント](#rotating-secrets-required-permissions-function-cust-key-example)
+ [交代ユーザー戦略のポリシーステートメント](#rotating-secrets-required-permissions-function-alternating-example)

## Lambda ローテーション関数の実行ロールのポリシー
<a name="rotating-secrets-required-permissions-function-example"></a>

次のポリシーの例では、ローテーション関数が次の操作を許可します。
+ *SecretARN* の Secrets Manager 操作を実行します。
+ 新しいパスワードを作成します。
+ データベースまたはサービスが VPC で実行されている場合、必要な設定のセットアップを行います。[VPC 内のリソースにアクセスするように Lambda 関数を設定する](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html)、を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword"
            ],
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

## カスタマーマネージドキーのポリシーステートメント
<a name="rotating-secrets-required-permissions-function-cust-key-example"></a>

 AWS マネージドキー `aws/secretsmanager` 以外の KMS キーを使用しシークレットを暗号化する場合は、そのキーの使用に関するアクセス許可を、Lambda の実行ロールに付与する必要があります。[SecretArn 暗号化コンテキスト](security-encryption.md#security-encryption-encryption-context)を使用して復号化関数の使用を制限できます。この場合、ローテーション関数ロールには、ローテーションに使用するシークレットを復号化するアクセスのみが許可されます。次に、実行ロールポリシーに追加してKMS キーを使用してシークレットを復号化するステートメントの例を示します。

```
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Resource": "KMSKeyARN",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:SecretARN": "SecretARN"
                }
            }
        }
```

カスタマーマネージドキーで暗号化された複数のシークレットに対してローテーション機能を使用するには、以下の例のようなステートメントを追加して、実行ロールがシークレットを復号化できるようにします。

```
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Resource": "KMSKeyARN",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:SecretARN": [
                        "arn1",
                        "arn2"
                    ]
                }
            }
        }
```

## 交代ユーザー戦略のポリシーステートメント
<a name="rotating-secrets-required-permissions-function-alternating-example"></a>

*交代ユーザーローテーション戦略*については、「[Lambda 関数のローテーション戦略](rotation-strategy.md)」を参照してください。

Amazon RDS 認証情報を含むシークレットで、代替ユーザー戦略を使用しており、スーパーユーザーシークレットが [Amazon RDS によって管理](rotate-secrets_managed.md)されている場合、ローテーション関数が Amazon RDS の読み取り専用 API を呼び出して、データベースの接続情報を取得できるようにする必要もあります。 AWS 管理ポリシー [AmazonRDSReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSReadOnlyAccess.html) をアタッチすることをお勧めします。

次のポリシーの例では、関数が次の操作を許可します。
+ *SecretARN* の Secrets Manager 操作を実行します。
+ スーパーユーザーシークレットで認証情報を取得します。Secrets Manager は、スーパーユーザーシークレットの認証情報を使用し、ローテーションされたシークレットの認証情報を更新します。
+ 新しいパスワードを作成します。
+ データベースまたはサービスが VPC で実行される場合、必要な設定のセットアップを行います。詳細については、「[VPC 内のリソースにアクセスするように Lambda 関数を設定する](https://docs.aws.amazon.com/lambda/latest/dg/vpc.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword"
            ],
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DetachNetworkInterface"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------