Amazon Simple Storage Service (Amazon S3) バケットを、AWS Key Management Service (AWS KMS) のカスタムキーを使って暗号化しています。しかし、別の AWS アカウントのユーザーが、このバケットへアクセスしようとすると、アクセス拒否エラーが表示されます。どうすれば修正できますか?

アカウント A で AWS KMS で暗号化したパケットへのアクセス権をアカウント B 内のユーザーへ付与するには、次のような許可の設定をする必要です。

  • アカウント A のバケットポリシーは、アカウント B にアクセス権を付与する必要があります。
  • アカウント A の AWS KMS キーポリシーは、アカウント B のユーザーにアクセス権を付与する必要があります。
  • アカウント B の AWS Identity and Access Management (IAM) ユーザーポリシーは、アカウント A 内のバケットとキーの両方に対し、ユーザーアクセス権を付与する必要があります。

アクセス拒否エラーのトラブルシューティングを行うには、これらのアクセス許可が正しく設定されていることを確認してください。 

アカウント A のバケットポリシーは、アカウント B のユーザーにアクセス権を付与する必要があります

アカウント A の バケットポリシーを参照し、アカウント B のアカウント ID によるアクセスを許可するステートメントがあることを確認してください。

たとえば、このバケットポリシーでは、 s3:GetObject というアクセスを、アカウント ID 111122223333: に許可します。

{
  "Id": "ExamplePolicy1",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt1",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::awsexamplebucket/*",
      "Principal": {
        "AWS": [
          "111122223333"
        ]
      }
    }
  ]
}

アカウント A の AWS KMS キーポリシーは、アカウント B のユーザーにアクセス権を付与する必要があります。

AWS KMS キーポリシーは、アカウント B のユーザーに対し、 kms:Encryptkms:Decryptkms:ReEncrypt*kms:GenerateDataKey*kms:DescribeKey のアクション許可を付与する必要があります。たとえば、1 人の IAM ユーザーまたはロールのみにキーへのアクセスを許可する場合は、キーポリシーステートメントは次のようになります。  

{
   "Sid": "Allow use of the key",
   "Effect": "Allow",
   "Principal": {
     "AWS": [
       "arn:aws:iam::111122223333:role/role_name",
     ]
   },
   "Action": [
     "kms:Encrypt",
     "kms:Decrypt",
     "kms:ReEncrypt*",
     "kms:GenerateDataKey*",
     "kms:DescribeKey"
   ],
   "Resource": "*"
 }

アカウント A で、AWS マネジメントコンソールのポリシービューを使用してキーポリシーを確認ます。キーポリシー内で "Sid": "Allow use of the key" を探します。次に、このステートメントで、アカウント B のユーザーがプリンシパルとしてリストアップされていることを確認します。

"Sid": "Allow use of the key" のステートメントが表示されない場合は、コンソールのデフォルトビューでキーポリシー表示に切り替えます。次に、アクセス権を持つ外部アカウントである、アカウント B のアカウント ID をキーへの追加します。

アカウント B の IAM ユーザーポリシーは、アカウント A 内のバケットとキー両方に、ユーザーアクセス権を付与する必要があります。

アカウント B で IAM コンソールを開き、アカウント B 内のユーザーに関連付けられている、IAM ユーザーまたはロールを開きます。

IAM ユーザーまたはロールに適用されているアクセス許可ポリシーのリストを確認します。そこに、バケットとキー両方へアクセス権を付与しているポリシーが、適用されていることを確認します。

注: アカウント B の IAM ユーザーまたはロールが、すでに管理者アクセス権を持っている場合、キーへのアクセス許可を、そのユーザーの IAM ポリシーから付与する必要はありません。

バケットアクセスに関するひとつの例として、このステートメントでは、awsexamplebucket 上でs3:GetObjects3:PutObject を行うアクセス権を、 IAM ユーザーに付与しています。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt2",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::awsexamplebucket/*"
    }
  ]
}

キーアクセスに関する一つの例として、このステートメントでは、キー (arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd) を使うためのユーザーアクセス権を、IAM ユーザーに付与しています。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt3",
      "Action": [
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:ReEncrypt*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    }
  ]
}

IAM ユーザーのアクセス権限を追加または修正する手順については、「IAM ユーザーのアクセス許可の変更」をご参照ください。


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください

公開日: 2019 年 3 月 25 日