AWS アカウント間での暗号化された Amazon S3 ロケーションの登録 - AWS Lake Formation

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

AWS アカウント間での暗号化された Amazon S3 ロケーションの登録

AWS Lake Formation は AWS Key Management Service (AWS KMS) と統合されているため、Amazon Simple Storage Service (Amazon S3) ロケーションでデータを暗号化および復号化するための他の統合サービスをより簡単にセットアップできます。

カスタマーマネージドキーと の両方 AWS マネージドキー がサポートされています。クライアント側の暗号化/復号化はサポートされていません。

重要

[Requester pays] (リクエスタ支払い) が有効になっている Amazon S3 バケットの登録は避けてください。Lake Formation に登録されたバケットの場合、バケットの登録に使用されるロールは常にリクエスト元であると見なされます。バケットが別の AWS アカウントからアクセスされた場合、ロールがバケット所有者と同じアカウントに属している場合、バケット所有者はデータアクセスに対して課金されます。

このセクションでは、以下の状況で Amazon S3 ロケーションを登録する方法について説明します。

  • Amazon S3 内ロケーション内のデータが、 AWS KMSで作成された KMS キーで暗号化されている。

  • Amazon S3 の場所は、 と同じ AWS アカウント内にありません AWS Glue Data Catalog。

  • KMS キーは、Data Catalog と同じ AWS アカウントにあるか、存在しないかのいずれかです。

AWS アカウント A の (IAM) ロールを使用して AWS アカウント B に AWS KMS暗号化された Amazon S3 バケットを登録するには AWS Identity and Access Management 、次のアクセス許可が必要です。 Amazon S3

  • アカウント A のロールが、アカウント B のバケットに対する許可を付与する必要があります。

  • アカウント B のバケットポリシーが、アカウント A のロールにアクセス許可を付与する必要があります。

  • KMS キーがアカウント B にある場合は、キーポリシーがアカウント A のロールにアクセス権を付与し、アカウント A のロールが KMS キーに対する許可を付与する必要があります。

次の手順では、Data Catalog (前の説明の AWS アカウント A) を含む アカウントにロールを作成します。次に、このロールを使用してロケーションを登録します。Lake Formation は、Amazon S3 内の基盤となるデータにアクセスするときに、このロールを引き受けます。引き受けたロールには、KMS キーに対する必要な許可があります。その結果、ETL ジョブや Amazon Athenaなどの統合サービスで基盤となるデータにアクセスするプリンシパルに、KMS キーに対する許可を付与する必要がなくなります。

重要

Lake Formation サービスリンクロールを使用して、別のアカウントにあるロケーションを登録することはできません。その代わりに、ユーザー定義のロールを使用する必要があります。このロールは、「ロケーションの登録に使用されるロールの要件」の要件を満たす必要があります。サービスリンクロールの詳細については、「Lake Formation のサービスリンクロールの許可」を参照してください。

開始する前に

ロケーションの登録に使用されるロールの要件」を確認してください。

AWS アカウント間で暗号化された Amazon S3 ロケーションを登録するには
  1. データカタログと同じアカウント AWS で、 にサインイン AWS Management Console し、 で IAM コンソールを開きますhttps://console.aws.amazon.com/iam/

  2. 新しいロールを作成するか、「ロケーションの登録に使用されるロールの要件」の要件を満たす既存のロールを表示します。そのロールに、ロケーションに対する Amazon S3 許可を付与するポリシーが含まれていることを確認します。

  3. KMS キーが Data Catalog と同じアカウントにないという場合は、KMS キーに対する必要な許可を付与するインラインポリシーをロールに追加します。以下は、ポリシーの例です。<cmk-region><cmk-account-id> を KMS キーのリージョンとアカウント番号に置き換えます。<key-id> は、キー ID に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:<cmk-region>:<cmk-account-id>:key/<key-id>" } ] }
  4. Amazon S3 コンソールで、必要な Amazon S3 の許可をロールに付与するバケットポリシーを追加します。以下は、バケットポリシーの例です。<catalog-account-id> をデータカタログの AWS アカウント番号に、<role-name> をロールの名前に、<bucket-name> をバケットの名前に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect":"Allow", "Principal": { "AWS":"arn:aws:iam::<catalog-account-id>:role/<role-name>" }, "Action":"s3:ListBucket", "Resource":"arn:aws:s3:::<bucket-name>" }, { "Effect":"Allow", "Principal": { "AWS":"arn:aws:iam::<catalog-account-id>:role/<role-name>" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource":"arn:aws:s3:::<bucket-name>/*" } ] }
  5. で AWS KMS、KMS キーのユーザーとしてロールを追加します。

    1. https://console.aws.amazon.com/kms で AWS KMS コンソールを開きます。次に、管理者ユーザーとして、またはロケーションの暗号化に使用された KMS キーのキーポリシーを変更できるユーザーとしてサインインします。

    2. ナビゲーションペインで [Customer managed keys] (カスタマー管理型のキー) を選択してから、KMS キーの名前を選択します。

    3. KMS キーの詳細ページの [Key policy] (キーポリシー) タブにキーポリシーの JSON ビューが表示されていない場合は、[Switch to policy view] (ポリシービューへの切り替え) を選択します。

    4. [Key policy] (キーポリシー) セクションで [Edit] (編集) を選択し、以下の例にあるように、ロールの Amazon リソースネーム (ARN) を Allow use of the key オブジェクトに追加します。

      注記

      そのオブジェクトが欠落している場合は、例にある許可と共に追加してください。

      ... { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<catalog-account-id>:role/<role-name>" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, ...

      詳細については、「AWS Key Management Service デベロッパーガイド」の「他のアカウントのユーザーに KMS キーの使用を許可する」を参照してください。

  6. https://console.aws.amazon.com/lakeformation/ で AWS Lake Formation コンソールを開きます。データレイク管理者として Data Catalog AWS アカウントにサインインします。

  7. ナビゲーションペインの [管理] で、[データレイクのロケーション] を選択します。

  8. [Register location] (ロケーションを登録) を選択します。

  9. [Register location] (ロケーションの登録) ページの [Amazon S3 path] (Amazon S3 パス) に、ロケーションのパスを s3://<bucket>/<prefix> として入力します。<bucket> はバケット名、<prefix> はロケーションのパスの残りの部分に置き換えてください。

    注記

    クロスアカウントバケットは [Browse] (参照) を選択してもリストに表示されないため、パスを入力する必要があります。

  10. [IAM role] (IAMロール) には、ステップ 2 からのロールを選択します。

  11. [Register location] (ロケーションを登録) を選択します。