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

所要時間2分
0

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

簡単な説明

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

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

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

解決策

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

次の手順を実行して、QuickSight から 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 の QuickSight サービスロールを 追加します。

    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 は QuickSight ロールの ARN に置き換えてください。

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

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

QuickSight サービスロール ARN を取得するには:

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

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

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

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

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

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

アカウント A の QuickSightサービスロールに次のインライン 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>"
    }
  ]
}

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

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

その他の考慮事項

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

関連情報

Editing keys

Amazon S3 に接続できません

Troubleshooting Amazon QuickSight

Viewing a key policy (console)

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

関連するコンテンツ