AWS KMS キーの暗号化を使用して大容量ファイルを Amazon S3 にアップロードできないのはなぜですか?

所要時間1分
0

Amazon Simple Storage Service (Amazon S3) バケットに大容量ファイルをアップロードしたいと考えています。アップロードリクエストには、AWS Key Management Service (AWS KMS) キーを含む暗号化情報を含めています。しかし、アクセス拒否エラーが表示されます。

簡単な説明

オブジェクトの暗号化に使用する AWS KMS キーで kms:Decrypt アクションを実行する権限があることを確認します。

大容量ファイルの場合、AWS コマンドラインインターフェイス (AWS CLI) での高レベルの aws s3 コマンド、AWS SDK、および多くのサードパーティ製プログラムでは、自動的にマルチパートアップロードが実行されます。AWS KMS キーを使用してマルチパートアップロードを暗号化するには、kms:GenerateDataKeykms:Decrypt の権限が必要です。kms:GenerateDataKey 権限を使用することで、アップロードを開始できます。kms:Decrypt 権限で、同じオブジェクトの以前のパートに使用したキーを使用して、新しくアップロードされるパートを暗号化できます。

**注:**AWS KMS キーを使用して暗号化してマルチパートアップロードを実行するには、以下が必要です。

  • キーに対する kms:Decrypt および kms:GenerateDataKey アクションへの権限。
  • CreateMultipartUpload API の kms:GenerateDataKey アクションの権限。
  • UploadPart API と UploadPartCopy API に対する kms:Decrypt アクションの権限。Amazon S3 は、マルチパートアップロードが完了する前に、暗号化されたファイルパートからデータを復号して読み取る必要があるため、これらの権限が必要です。

AWS ID およびアクセス管理 (IAM) ユーザーまたはロールが KMS キーと同じ AWS アカウントにある場合は、キーポリシーに対するこれらの権限が必要です。IAM ユーザーまたはロールが KMS キーとは異なるアカウントに属している場合、キーポリシーと IAM ユーザーまたはロールの両方に対する権限が必要です。

解決策

キーポリシー

AWS マネジメントコンソールのポリシービューで AWS KMS キーポリシーを確認してください

キーポリシーで、IAM のユーザーまたはロールの Amazon Resource Number (ARN) が AWS のプリンシパルとしてリストされているステートメントを検索します。ARN は、arn:aws:iam::111122223333:user/john のような形式です。

次に、IAM のユーザーまたはロールのステートメントで許可されているアクションのリストを確認します。マルチパートアップロードの場合、許可されるアクションのリストには、SSE-KMS による kms:Decrypt が含まれている必要があります。

例えば、キーポリシー内の次のステートメントによって、John というユーザーは kms:Decryptkms:GenerateDataKey のアクションを実行できます:

{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/john"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}

IAM 権限

IAM 権限を確認するには、IAM コンソールを開いて IAM のユーザーまたはロールを選択します。

IAM のユーザーまたはロールに適用される権限ポリシーのリストを確認してください。オブジェクトの暗号化に使用するキーに対して kms:Decrypt アクションを実行できるポリシーが適用されていることを確認してください:

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

このサンプルステートメントでは、IAM ユーザーに対して、arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd キーで kms:Decryptkms:GenerateDataKey を実行する権限が付与されます。

IAM 権限を更新する手順については、「IAM ユーザーの権限を変更する」を参照してください。

関連情報

AWS ポリシージェネレーター

Amazon S3 でのデータ暗号化

AWS公式
AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ