Quicksight でデータソースとして Athena を使用しているときに表示される「アクセスが拒否されました」のエラーを解決するにはどうすればよいですか?

所要時間3分
0

Amazon QuickSight アカウントで Amazon Athena をデータソースとして使用しようとすると、「アクセスが拒否されました」というエラーが表示されます。これを解決するにはどうすればよいですか?

簡単な説明

Amazon QuickSight のデータソースとして Amazon Athena を使用すると、アクセスが拒否されましたというエラーが表示される、一般的な理由を以下に示します。

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

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

解決方法

AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

お使いの QuickSight アカウントに、Amazon S3 バケットにアクセスするために必要なアクセス権限がない場合

以下のようなエラーが表示されます。

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. [Manage QuickSight] (QuickSight を管理) を選択します。
  3. [Security & Permissions] (セキュリティと許可) を選択します。
  4. [QuickSight access to AWS services] (QuickSight の AWS のサービスへのアクセス) で、[Manage] (管理) を選択します。
  5. AWS サービスのリストから、[Amazon S3] を選択します。
  6. [S3 バケットを選択] を選択し、QuickSight からアクセスする S3 バケットを選択します。
  7. [Athena Workgroup の書き込み権限] を選択し、[完了] を選択します。
  8. [Save] (保存) を選択します。

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

データファイルが AWS KMS キーで暗号化されている場合、Amazon S3 はデータへのアクセスを拒否する場合があります。この問題を解決するには、QuickSight サービスロールに AWS KMS キーへのアクセス権を付与します。以下のステップを実行します。

AWS CLI を使用する

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

2.    Amazon S3 コンソールを使用して AWS KMS キー ARN を見つけます。
データファイルを含むバケットに移動します。
[Overview] (概要) タブを選択し、[KMS key ID] (KMS キー ID) を見つけます。

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

4.    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": "*"
}

注意: aws_account_id を AWS アカウント ID に置き換えます。

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

必要な IAM アクセス権限ポリシーが割り当てられていない場合にも、アクセス拒否エラーが表示されることがあります。どのポリシーが割り当てられているかを確認するには、次の手順に従います。

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

S3 または Athena へのアクセスを制限するポリシーがある場合は、QuickSight 管理者にポリシーの変更を依頼します。このとき、管理者は、IAM ポリシーの割り当てを解除し、S3 および Athena のアクセス権限を含むようにポリシーを編集します。詳細については、「IAM による AWS サービスへの詳細なアクセスの設定」を参照してください。

S3 バケットが存在しない、または、データのクエリに使用される IAM ロールに必要な S3 アクセス権限がない場合

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

Unable to verify/create output bucket

上記のエラーを解決するには、「Amazon Athena で「出力バケットを検証/作成できません」エラーを解決するにはどうすればよいですか?」を参照してください。

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

必要な SCP が割り当てられていない場合

AWS Organizations を使用している場合、必要な SCP が割り当てられていないと、アクセス拒否エラーが表示されることがあります。割り当てられている許可を確認するために、AWS Organizations の管理者に問い合わせて SCP 設定を確認してください。AWS Organizations の管理者は、「Creating, updating, and deleting service control policies」(サービスコントロールポリシーの作成、更新、削除) を参照してください。

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 を見つけます。

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

describe-user

aws quicksight describe-user  --user-name user_name  --aws-account-id account_id --namespace default
  • または -

describe-group

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

注: 上記のコマンドでは、user_name をユーザー名、group_name をグループ名、 account_id をアカウントの ID に置き換えます。

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

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

4.    [Actions] (アクション)、[Permissions] (アクセス権限) の順に選択します。

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

6.    [SAML と Amazon QuickSight ユーザーおよびグループ] で、QuickSight ユーザーまたはグループ ARN を入力します。
例えば、arn:aws:quicksight:region:accountId:user/namespace/username などです。

7.    正しいデータソースを選択し、[すべてのテーブル] を選択します。テーブルの権限は**[選択]** および [説明] です。

8.    [Grant] (付与) を選択します。

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


関連情報

Amazon QuickSight で Athena を使用する際のアクセス権限が不十分

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

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

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

関連するコンテンツ