別のアカウントから AWS Secrets Manager シークレットにアクセスする - AWS Secrets Manager

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

別のアカウントから AWS Secrets Manager シークレットにアクセスする

1 つのアカウントのユーザーに別のアカウントのシークレットへのアクセス (クロスアカウントアクセス) を許可するには、リソースポリシーとアイデンティティポリシーの両方でアクセスを許可する必要があります。これは、シークレットと同じアカウントのアイデンティティにアクセスを許可することとは異なります。

また、シークレットが暗号化されているKMSキーの使用を ID に許可する必要があります。これは、クロスアカウントアクセスに AWS マネージドキー (aws/secretsmanager) を使用できないためです。代わりに、作成したKMSキーでシークレットを暗号化し、それにキーポリシーをアタッチする必要があります。KMS キーの作成には料金がかかります。シークレットの暗号化キーを変更するには、AWS Secrets Manager シークレットを変更する を参照してください。

以下のポリシーの例では、Account1 にシークレットと暗号化キーがあり、Account2 にシークレット値へのアクセスを許可するアイデンティティがあると仮定します。

ステップ 1: リソースポリシーを Account1 のシークレットにアタッチする
  • 次のポリシーではAccount2ApplicationRoleの が のシークレットにアクセスすることを許可しますAccount1。このポリシーを使用するには、「リソースベースのポリシー」を参照してください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
ステップ 2: Account1 のキーのKMSキーポリシーにステートメントを追加する
  • 次のキーポリシーステートメントではAccount2ApplicationRoleで KMS キーを使用して のシークレットを復号Account1することを に許可しますAccount1。このステートメントを使用するには、キーのKMSキーポリシーに追加します。詳細については、「キーポリシーの変更」を参照してください。

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account2:role/ApplicationRole" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }
ステップ 3: Account2 のアイデンティティにアイデンティティポリシーをアタッチする
  • 次のポリシーにより、Account2ApplicationRoleAccount1 のシークレットにアクセスし、同じく Account1 にある暗号化キーを使用してシークレットの値を復号化できるようになります。このポリシーを使用するには、「アイデンティティベースのポリシー」を参照してください。シークレットARNの は、シークレットの詳細ページの Secrets Manager ARNコンソールで確認できます。または、describe-secret を呼び出すこともできます。

    { "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "SecretARN" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:Account1:key/EncryptionKey" } ] }