Lake Formation と Athena ユーザーアクセス許可を管理する
Lake Formation は、Lake Formation に登録されている Amazon S3 データストアをクエリするための認証情報を供給します。以前に IAM ポリシーを使用して Amazon S3 にあるデータの場所の読み込みを許可または拒否した場合は、その代わりに Lake Formation 許可を使用できます。ただし、他の IAM 許可は引き続き必要です。
IAM ポリシーを使用するときは、常に IAM のベストプラクティスに従うようにしてください。詳細については、IAM ユーザーガイドの「IAM でのセキュリティベストプラクティス」を参照してください。
以下のセクションでは、Lake Formation に登録されたデータのクエリに Athena を使用するうえで必要な許可を要約しています。詳細については、「AWS Lake Formation デベロッパーガイド」の「AWS Lake Formation でのセキュリティ」を参照してください。
許可の概要
Lake Formation と Athena に対するアイデンティティベースの許可
Lake Formation に登録されたデータのクエリに Athena を使用するユーザーには、lakeformation:GetDataAccess
アクションを許可する IAM 許可ポリシーが必要です。AWS 管理ポリシー: AmazonAthenaFullAccessでは、このアクションが許可されます。インラインポリシーを使用する場合は、このアクションを許可するように許可ポリシーを更新してください。
Lake Formation では、データレイク管理者が、データベースやテーブルなどのメタデータオブジェクトの作成、他のユーザーへの Lake Formation 許可の付与、および新しい Amazon S3 の場所の登録を行う許可を持っています。新しい場所を登録するには、Lake Formation のためのサービスリンクロールに対する許可が必要です。詳細については、「AWS Lake Formation デベロッパーガイド」の「データレイク管理者の作成」および「Lake Formation のサービスにリンクしたロールのアクセス許可」を参照してください。
Lake Formation ユーザーは、データレイク管理者によって付与された Lake Formation 権限に基づいて、データベース、テーブル、テーブル列、および基盤となる Amazon S3 データストアのクエリに Athena を使用できます。ユーザーは、データベースやテーブルを作成したり、Lake Formation に新しい Amazon S3 の場所を登録したりすることはできません。詳細については、「AWS Lake Formation デベロッパーガイド」の「データレイクユーザーの作成」を参照してください。
Athena では、アイデンティティベースのアクセス許可ポリシー (Athena ワークグループ用を含む) が、引き続き Amazon Web Services アカウントユーザーによる Athena アクションへのアクセスを制御します。さらに、Athena ドライバーで利用できる SAML ベースの認証を通じて、フェデレーションアクセスが提供される場合もあります。詳細については、「ワークグループを使用してクエリのアクセスとコストを制御する」、「IAM ポリシーを使用してワークグループのアクセスを制御する」、および「Athena API へのフェデレーションアクセスを有効にする」を参照してください。
詳細については、「AWS Lake Formation デベロッパーガイド」の「Lake Formation へのアクセス許可の付与」を参照してください。
Athena のクエリ結果の場所に対する Simple Storage Service (Amazon S3) の許可
Amazon S3 にある Athena のクエリ結果の場所を Lake Formation に登録することはできません。Lake Formation 許可は、これらの場所へのアクセスを制限しません。アクセスを制限しない限り、Athena ユーザーは、データに対する Lake Formation の許可がなくてもクエリ結果ファイルとメタデータにアクセスできます。この問題を回避するには、ワークグループを使用してクエリ結果の場所を指定し、ワークグループのメンバーシップを Lake Formation の許可と合致させることが推奨されます。その後、IAM 許可ポリシーを使用して、クエリ結果の場所へのアクセスを制限できます。クエリ結果の詳細については、「クエリ結果と最近のクエリを操作する」を参照してください。
履歴をクエリする Athena ワークグループのメンバーシップ
Athena クエリ履歴は、保存されたクエリと完全なクエリ文字列のリストを公開します。ワークグループを使用してクエリ履歴へのアクセスを分離しない限り、Lake Formation のデータをクエリする権限がない Athena ユーザーが、列名や選択条件などを含めた、そのデータに対して実行されるクエリ文字列を表示することができます。ワークグループを使用してクエリ履歴を分離し、Athena ワークグループのメンバーシップを Lake Formation 許可に合致させてアクセスを制限することが推奨されます。詳細については、「ワークグループを使用してクエリのアクセスとコストを制御する」を参照してください。
データに対する Lake Formation 許可
Athena ユーザーには、Lake Formation を使用するための基本的な許可に加えて、クエリするリソースにアクセスするための Lake Formation 許可が必要です。これらの許可は、Lake Formation 管理者によって付与および管理されます。詳細については、「AWS Lake Formation デベロッパーガイド」の「メタデータとデータに対するセキュリティとアクセスコントロール」を参照してください。
Simple Storage Service (Amazon S3) の場所に書き込むための IAM 許可
Amazon S3 に対する Lake Formation 許可には、Amazon S3 に書き込む機能が含まれていません。Create Table As Statements (CTAS) には、テーブルの Amazon S3 の場所への書き込みアクセス権が必要です。Lake Formation に登録されたデータに対して CTAS クエリを実行するには、Athena ユーザーに、データの場所を読み込むための適切な Lake Formation 許可に加えて、テーブルの Amazon S3 の場所に書き込むための IAM 許可が必要です。詳細については、「クエリ結果からテーブルを作成する (CTAS)」を参照してください。
暗号化されたデータ、メタデータ、および Athena のクエリ結果に対する許可
Amazon S3 にある基盤となるソースデータと、Lake Formation に登録されたデータカタログ内のメタデータは暗号化することができます。Lake Formation に登録されたデータをクエリするために Athena を使用しているときに、Athena がクエリ結果の暗号化を処理する方法に変更はありません。詳細については、「Amazon S3 に保存された Athena クエリ結果を暗号化する」を参照してください。
-
ソースデータの暗号化 — Amazon S3 データの場所にあるソースデータの暗号化がサポートされています。Lake Formation に登録されている暗号化された Amazon S3 の場所をクエリする Athena ユーザーには、データを暗号化および復号化するための許可が必要です。要件の詳細については、「サポートされる Amazon S3 の暗号化オプション」および「Amazon S3 の暗号化されたデータに対する許可」を参照してください。
-
メタデータの暗号化 – データカタログ内のメタデータの暗号化がサポートされています。Athena を使用するプリンシパルの場合、アイデンティティベースのポリシーで、メタデータを暗号化するために使用されるキーの
"kms:GenerateDataKey"
、"kms:Decrypt"
、および"kms:Encrypt"
アクションが許可されている必要があります。詳細については、「AWS Glue デベロッパーガイド」の「Data Catalog の暗号化」と、「AWS Glue Data Catalog で Athena から暗号化されたメタデータへのアクセスを構成する」を参照してください。
外部アカウントの Amazon S3 バケットに対するリソースベースの許可 (オプション)
別のアカウントにある Amazon S3 のデータの場所をクエリするには、リソースベースの IAM ポリシー (バケットポリシー) がその場所へのアクセスを許可する必要があります。詳細については、「Athena で Amazon S3 バケットへのクロスアカウント アクセスを構成する」を参照してください。
別のアカウントにあるデータカタログへのアクセスについては、「オプション A: Athena でデータカタログへのクロスアカウントアクセスを設定する」を参照してください。