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) での高レベルの S3 コマンド、AWS SDK、および多くのサードパーティ製プログラムでは、自動的にマルチパートアップロードが実行されます。AWS KMS キーを使用してマルチパートアップロードを暗号化するには、kms:GenerateDataKeykms:Decrypt の権限が必要です。kms:GenerateDataKey 権限を使用することで、アップロードを開始できます。kms:Decrypt 権限を使用することで、同じオブジェクトの以前のパートに使用したキーを使用して、新しくアップロードされるパートを暗号化できます。

注: すべてのパートをアップロードしたら、アップロードしたパートを組み立ててマルチパートアップロード操作を完了する必要があります。アップロードされたパートは AWS KMS キーを使用してサーバー側で暗号化されるため、組み立てる前にオブジェクトの各パートを復号する必要があります。そのため、AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) を使用するマルチパートアップロードリクエストには kms:Decrypt 権限が必要です。

解決策

AWS Identity and Access Management (IAM) のロールとキーは、同じ AWS アカウントにある場合もあれば、異なるアカウントにある場合もあります。IAM のロールとキーが同じアカウントにある場合は、IAM ポリシーまたは AWS KMS キーポリシーから kms:Decrypt 権限を指定できます。IAM のロールとキーが異なるアカウントにある場合は、キーと IAM ポリシーの両方で kms:Decrypt 権限を指定する必要があります。

キーポリシー

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

キーポリシーで、IAM のユーザーまたはロールの 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 ポリシージェネレーター

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