Athena を Quicksight のデータソースとして使用する際の「アクセス拒否」エラーを解決する方法を教えてください。

所要時間3分
0

Amazon Athena を Amazon QuickSight アカウントのデータソースとして使用しようとすると「アクセス拒否」エラーが表示されます。

簡単な説明

Amazon Athena を Amazon QuickSight のデータソースとして使用するとアクセス拒否エラーが表示される一般的な原因は次のとおりです。

  • Amazon Simple Storage Service (Amazon S3) バケットへのアクセスに要求される権限が QuickSight アカウントにない。
  • データファイルが AWS Key Management Service (AWS KMS) キーで暗号化されている。
  • 必要となる AWS Identity and Access Management (IAM) アクセス権限ポリシーが割り当てられていない。
  • Amazon S3 バケットが存在しない。または、データのクエリに使用する IAM ロールに要求される S3 アクセス権限がない。
  • (AWS Organizations を使用する QuickSight アカウントの場合) 必要となるサービスコントロールポリシー (SCP) が割り当てられていない。
  • (Lake Formation を使用する Athena アカウントの場合) QuickSight ユーザーまたはグループに AWS Lake Formation アクセス権限がない。

注: トラブルシューティングを開始する前に、Athena のデータにアクセスできるようにしてください。

解決方法

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用しているようにしてください。

Amazon S3 バケットへのアクセスに要求される権限が QuickSight アカウントにない

その場合、次のようなエラーが表示されます。

「An error has been thrown from AWS Athena client.Permission denied on S3 path:sourceErrorMessage: s3:/example bucket/object name」

S3 バケットへのアクセス権限を取得するには、次の手順を実行します。

  1. Amazon QuickSight コンソールを開きます。
  2. [QuickSight の管理] を選択します。
  3. [セキュリティとアクセス権限] を選択します。
  4. [QuickSight の AWS のサービスへのアクセス] で、[管理] を選択します。
  5. AWS サービスのリストから、[Amazon S3] を選択します。
  6. [S3 バケットを選択] を選択し、S3 バケットを選択します。
  7. [Athena ワークグループの書き込みアクセス権限] を選択し、[完了] を選択します。
  8. [保存] を選択します。

データファイルが AWS KMS キーで暗号化されている

データファイルが AWS KMS キーで暗号化されている場合、Amazon S3 でデータへのアクセスを拒否することがあります。この問題を解決するには、AWS CLI か AWS KMS コンソールのいずれかを使用して、QuickSight サービスロールに AWS KMS キーへのアクセス権を付与します。

AWS CLI を使用する

次の手順を実行します。

  1. IAM コンソールを使用して QuickSight サービスロール ARN を探します。

  2. Amazon S3 コンソールを使用して AWS KMS キー ARN を探します。

  3. データファイルを含む S3 バケットへ移動します。

  4. [概要] タブを選択し、KMS キー ID を探します。

  5. QuickSight サービスロール ARN を KMS キーポリシーに追加します。

  6. AWS CLI でcreate-grant コマンドを実行します。

    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 コンソールを使用する

QuickSight サービスロールを AWS KMS キーポリシーに追加するには、キーポリシーを変更します。続いて、次のアクセス権限をキーポリシーに追加します。

{     "Sid": "Allow use of the key",
     "Effect": "Allow",
     "Principal": {
         "AWS": [
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-service-role-v0",
              "arn:aws:iam::aws-account-id:role/service-role/aws-quicksight-s3-consumers-role-v0"
              ]
         },
         "Action": [
            "kms:Decrypt"
               ],
         "Resource": "*"
}

注: 前述のポリシーでは、QuickSight サービスロールの ARN は Principal セクションに追加するようにしてください。

必要となる IAM アクセス権限ポリシーが割り当てられていない

どのポリシーが割り当てられているかを確認し、そのポリシーによってアクセスが制限されているかどうかを確認するには、次の手順を実行します。

  1. Amazon QuickSight コンソールを開きます。
  2. [QuickSight の管理] を選択します。
  3. [セキュリティとアクセス権限] を選択します。
  4. **[IAM ポリシーの割り当て] **を選択します。
  5. Athena にアクセスするための IAM ポリシー割り当てがあるかどうかを確認します。
  6. このポリシーで S3 か Athena へのアクセスが制限されていないことを確認します。

ポリシーで S3 か Athena へのアクセスが制限されている場合は、QuickSight 管理者にポリシーの変更を依頼してください。自分が管理者の場合は、IAM ポリシー割り当てを非アクティブ化し、ポリシーを編集して S3 と Athena のアクセス権限が含まれるようにします。詳細については、「Setting granular access to AWS services through IAM」を参照してください。

S3 バケットが存在しないか、データのクエリに使用する IAM ロールに要求される S3 アクセス権限がない

次のエラーが表示されます。

「Unable to verify/create output bucket.」

上記のエラーを解決するには、「Amazon Athena で「Unable to verify/create output bucket」エラーを解決する方法を教えてください。」を参照してください。

バケットが存在しない場合は、有効な S3 バケットを追加します。Amazon QuickSight コンソールで、AWS サービスのリストから Amazon S3 を選択します。続いて、クエリ結果の場所で使用する S3 バケットを選択します。

必要となる SCP が自分 (組織) に割り当てられていない

組織の管理者に、SCP 設定を確認し自分に割り当てられているアクセス権限を確認してもらうよう依頼してください。自分が組織の管理者の場合は、「サービスコントロールポリシーの作成、更新、削除」を参照してください。

QuickSight ユーザーまたはグループに Lake Formation アクセス権限がない

Lake Formation を使用する Athena アカウントに、次のエラーが表示される場合があります。

「An error has been thrown from the AWS Athena client.Insufficient permissions to execute the query.Insufficient Lake Formation permission(s).」

QuickSight のLake Formation アクセス権限を付与するには、自分が Lake Formation 管理者であることが必要です。

次の手順を実行します。

  1. QuickSight ユーザーまたはグループの ARN を探します。

  2. 次の AWS CLI コマンドのいずれかを実行します。

    describe-user

    aws quicksight describe-user  --user-name user_name  --aws-account-id account_id --namespace default
    

    -or-

    describe-group

    aws quicksight describe-group --group-name group_name  --aws-account-id account_id --namespace default
    

    注: 上記のコマンドでは、user_name を自分のユーザー名に、group_name を自分のグループ名に、account_id を自分のアカウント ID に置き換えてください。

  3. Lake Formation コンソールを開きます。

  4. [テーブル] を選択します。

  5. [アクション] を選択してから、**[アクセス権限]**を選択します。

  6. [プリンシパル] のリストから、[付与] を選択します。

  7. [SAML と Amazon QuickSight のユーザーとグループ] に、QuickSight ユーザーまたはグループ ARN を入力します。たとえば、「arn:aws:quicksight:region:accountId:user/namespace/username」です。

  8. 該当するデータソースを選択し、[すべてのテーブル] を選択します。テーブルのアクセス権限は [選択][説明] です。

  9. **[付与]**を選択します。

権限を付与したら、QuickSight コンソールに戻って、データセットをもう一度作成してみます。

関連情報

Athena を Amazon QuickSight で使用するのに十分なアクセス権限がない

Amazon S3 と Amazon Athena に対する Amazon QuickSight のきめ細かなアクセスコントロールのご紹介

AWS Lake Formation で Amazon QuickSight 作成者に対するきめ細かなアクセス権限を有効にする

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

関連するコンテンツ