私の Amazon S3 バケットにはカスタムの AWS KMS キーを使用したデフォルト暗号化が設定されています。ユーザーがそのバケットでダウンロードやアップロードを行えるようにするにはどうすればいいですか?

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) バケットをセットアップして、カスタムの AWS Key Management Service (AWS KMS) キーを使用し、デフォルト暗号化を実行しています。AWS Identity and Access Management (IAM) ユーザーがバケットでダウンロードとアップロードを実行できるようにしたいと思います。どうすればそれができますか?

解決方法

IAM ユーザーと AWS KMS キーが同一の AWS アカウントに属している場合

1.    AWS KMS コンソールを開き、ポリシービューを使用してキーのポリシードキュメントを表示します。少なくとも、kms:GenerateDataKey および kms:Decrypt アクションに対する IAM ユーザーアクセス許可を付与するようにキーのポリシーを変更します。次のようなステートメントを追加できます。

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

注: このポリシーの例には、個々の IAM ユーザーが暗号化された S3 バケットをダウンロードしてアップロードするために必要な最小限のアクセス許可のみが含まれます。ユースケースに基づいて、アクセス許可を変更または拡張できます。

2.    IAM コンソールを開きます。バケットにアップロードおよびバケットからダウンロードするためのアクセス許可を付与するポリシーを IAM ユーザーに追加します。次のようなポリシーを使用できます。

注: Resource 値には、バケット内のオブジェクトを示すワイルドカード文字と共にバケットの Amazon リソースネーム (ARN) を入力します。

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

重要: IAM ユーザーポリシーによって付与された S3 アクセス許可は、バケットポリシーの明示的な拒否ステートメントによってブロックされる場合があります。IAM ユーザーポリシーと競合する明示的な拒否ステートメントがないことを確認するために、バケットポリシーを確認してください。

IAM ユーザーが AWS KMS キーおよび S3 バケットと異なるアカウントに存在する場合

重要: お客様が管理する AWS KMS キーにはクロスアカウントアクセスを付与できますが、AWS が管理する AWS KMS キーには付与できません。AWS が管理する AWS KMS キーのキーポリシーは変更できません。

1.    AWS KMS コンソールを開き、ポリシービューを使用してキーのポリシードキュメントを表示します。少なくとも、kms:GenerateDataKey および kms:Decrypt アクションに対する IAM ユーザーアクセス許可を付与するようにキーのポリシーを変更します。次のようなステートメントを追加できます。

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

注: このポリシーの例には、個々の IAM ユーザーが暗号化された S3 バケットをダウンロードしてアップロードするために必要な最小限のアクセス許可のみが含まれます。ユースケースに基づいて、アクセス許可を変更または拡張できます。

2.    IAM ユーザーが属しているアカウントから IAM コンソールを開きます。バケットにアップロードおよびバケットからダウンロードするためのアクセス許可を付与するポリシーを IAM ユーザーに追加します。ポリシーは、バケットに関連付けられている AWS KMS キーでも機能する必要があります。

クロスアカウントのシナリオでは、IAM ユーザーがオブジェクトをアップロードできるように s3:PutObjectAcl 許可を付与することを検討してください。次に、バケットのアカウントにオブジェクトのフルコントロール (bucket-owner-full-control) を付与します。また、同期オペレーション再帰的なコピーオペレーションの実行に必要な s3:ListBucket アクセス許可を付与することも検討してください。次のようなポリシーを使用できます。

注: 最初の Resource 値には、バケット内のオブジェクトを示すワイルドカード文字と共にバケットの ARN を入力します。2 番目の Resource 値には、バケットの ARN を入力します。3 番目の Resource 値には、AWS KMS キーの ARN を入力します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DownloadandUpload",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    },
    {
      "Sid": "ListBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
    },
    {
      "Sid": "KMSAccess",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    }
  ]
}

3.    S3 バケットを所有するアカウントから Amazon S3 コンソールを開きます。バケットポリシーを更新して、IAM ユーザーにバケットへのアクセス権を付与します。次のようなポリシーを使用できます。

注: Principal 値には、IAM ユーザーの ARN を入力します。最初の Resource 値には、バケット内のオブジェクトを示すワイルドカード文字と共にバケットの ARN を入力します。2 番目の Resource 値には、バケットの ARN を入力します。

{
  "Id": "Policy1584399307003",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DownloadandUpload",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/Jane"
        ]
      }
    },
    {
      "Sid": "ListBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/Jane"
        ]
      }
    }
  ]
}

関連情報

キーの編集

aws s3 cp

AWS KMS で IAM ポリシーを使用する

Amazon S3: S3 バケットのオブジェクトへの読み取りおよび書き込みアクセスを許可する

すべての新しいバケットの ACL を無効にし、オブジェクト所有権を強制する

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ