スキップしてコンテンツを表示

Quick Sight から別のアカウントの Amazon S3 バケットへのクロスアカウントアクセスを設定する方法を教えてください。

所要時間3分
0

Amazon Quick Sight でデータセットを作成するために、別のアカウントの Amazon Simple Storage Service (Amazon S3) バケットのデータを使用したいと考えています。

簡単な説明

次のステップを実行して、Amazon Quick Sight (アカウント A) から別のアカウント (アカウント B) の暗号化された Amazon S3 バケットへの クロスアカウントアクセスを作成します。

  1. S3 バケットが存在するアカウント B の S3 バケットポリシーを更新する。
  2. Quick Sight サービスロール (アカウント A) がアクセスできるリソースとして S3 バケットを追加する。
  3. Quick Sight サービスロールに S3 バケットの AWS Key Management Service (AWS KMS) キーへのアクセスを許可する。

注: この記事では、S3 バケットが暗号化されていることを前提としています。AWS KMS キーで S3 バケットを暗号化することもベストプラクティスです。Amazon S3 のデフォルト暗号化を有効にする方法の詳細については、「デフォルトの暗号化の設定」を参照してください。

解決策

アカウント B の S3 バケットポリシーを更新する

次の手順を実行して、Quick Sight から Amazon S3 へのクロスアカウントアクセスを設定します。

  1. アカウント B の S3 バケットのバケットポリシーを更新 します。以下はその一例です。

    {  "Version": "2012-10-17",
      "Id": "BucketPolicy",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<Account A>:role/service-role/aws-quicksight-service-role-v0"
          },
          "Action": [
            "s3:ListBucket",
            "s3:GetObject",
            "s3:GetObjectVersion"
          ],
          "Resource": [
            "arn:aws:s3:::cross-account-qstest-bucket",
            "arn:aws:s3:::cross-account-qstest-bucket/*"
          ]
        }
      ]
    }

    注:アカウント A に ** aws-quicksight-s3-consumers-role-v0 ロールが存在する場合は、必ずこのロールを使用してください。Amazon S3 との接続の問題を回避するために、aws-quicksight-service-role-v0aws-quicksight-s3-consumers-role-v0** に置き換えてください。

  2. S3 バケットの AWS KMS キーにアクセスできるユーザーのリストに、アカウント A の Quick Sight サービスロールを 追加します。

    aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quickSight_role_arn --operations Decrypt
    

注: **aws_kms_key_arn ** は AWS KMS キーの ARN に、quicksight_role_arn は Quick Sight ロールの ARN に置き換えてください。

AWS KMS キー ARNを取得するには

  1. Amazon S3 コンソールを開きます。
  2. データファイルを含む S3 バケットに移動します。
  3. [プロパティ] タブを選択します。AWS KMS キー ARN は [デフォルトの暗号化] にあります。

Quick Sight サービスロール ARN を取得するには

  1. アカウント A で AWS Identity and Access Management (IAM) コンソールを開きます。
  2. ナビゲーションペインで、[ロール] を選択します。
  3. aws-quicksight-service-role を検索します。
  4. Quick Sight サービスロールを選択し、その ARN をコピーします。

注: アカウント A に aws-quicksight-s3-consumers-role-v0 ロールが存在する場合は、必ずこのロールを使用してください。そうしないと、Amazon S3 に接続しようとしたときにエラーが表示されることがあります。

Quick Sight サービスロールがアクセスできるリソースとして S3 バケットを追加する

Quick Sight サービスロールがアカウント B の S3 バケットにアクセスできるようにするには、次の手順を実行します。

  1. Amazon Quick Sight コンソールを開きます。
  2. [Quick Sight の管理] を選択します。
  3. [セキュリティとアクセス許可] を選択します。
  4. [追加または削除する] を選択します。
  5. **[詳細]**を選択します。
  6. [S3 バケットを選択] を選択します。
  7. [AWS] タブからアクセスできる S3 バケットを選択し、お使いの S3 バケットが Quick Sight アクセス用にリストされていることを確認します。
  8. (オプション) S3 バケットがリストにない場合は、[別のバケットを使用] でバケットを追加します。
  9. [完了] を選択します。

Quick Sight サービスロールに S3 バケットの AWS KMS キーへのアクセスを許可する

アカウント A の Quick Sightサービスロールに次のインライン IAM ポリシーを追加します。

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt3",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
        ],
      "Resource": ""arn:aws:kms:us-east-1:<account ID of your S3 bucket>:key/<KEYID>"
    }
  ]
}

注: 前述のインラインポリシーでは、Quick Sight サービスロールがアカウント B の AWS KMS キーにアクセスすることを許可します。ExampleStmt3 はステートメント ID に置き換えてください。

重要: aws-quicksight-s3-consumers-role-v0 ロールがアカウント A に存在する場合は、AWS KMS ポリシーをロールにアタッチする必要があります。AWS KMS ポリシーは S3 バケットのデータを復号します。更新されたロールポリシーを Quick Sight サービスロールにアタッチすると、アクセス許可のエラーが発生する可能性があります。このエラーの解決方法については、「Amazon Quick Sight で AWS リソースのアクセス許可に関するエラーをトラブルシューティングする方法を教えてください」を参照してください。

その他の考慮事項

Quick Sight から別のアカウントの S3 バケットへのクロスアカウントアクセスを設定する場合は、次の点を考慮してください。

関連情報

Editing keys

I can't connect to Amazon S3 (Amazon S3 に接続できません)

Troubleshooting Amazon Quick Sight (Amazon Quick Sight のトラブルシューティング)

Viewing a key policy (console) (キーポリシーを表示する - コンソールの使用)

コメントはありません