保管中の暗号化 - Amazon Athena

保管中の暗号化

Amazon Athena では、同じリージョン内、および限られた数のリージョン間で Amazon S3 内の暗号化されたデータに対するクエリを実行できます。Amazon S3 内のクエリ結果、および AWS Glue データカタログ内のデータを暗号化することもできます。

Athena では、以下のアセットを暗号化できます。

注記

Athena を使用して暗号化されたテーブルを読み取るときに Athena が使用する暗号化オプションは、クエリ結果用のオプションではなく、テーブルデータに指定されたオプションです。クエリ結果とテーブルデータに別個の暗号化方法またはキーが設定されている場合、Athena はクエリ結果の暗号化または復号化に使用される暗号化オプションとキーを使用せずにテーブルデータを読み取ります。

ただし、暗号化されたデータが含まれるテーブルへのデータの挿入に Athena を使用する場合、Athena はクエリ結果に指定された暗号化設定を使用して、挿入されたデータを暗号化します。例えば、クエリ結果に CSE_KMS 暗号化を指定すると、Athena はクエリ結果の暗号化に使用されたものと同じ AWS KMS キー ID を使用して、挿入されたテーブルデータを CSE_KMS で暗号化します。

サポートされる Amazon S3 の暗号化オプション

Athena は、Amazon S3 内のデータセットとクエリ結果について、以下の暗号化オプションをサポートしています。

暗号化タイプ 説明 クロスリージョンサポート
SSE-S3 Amazon S3 マネージドキーを使用したサーバー側の暗号化 (SSE) はい
SSE-KMS AWS Key Management Service カスタマー管理のキーを使用したサーバー側の暗号化 (SSE)。
注記

この暗号化タイプの場合、Athena でのテーブルの作成時に、データが暗号化されていることを指定する必要はありません。

はい
CSE-KMS

AWS KMS カスタマー管理のキーを使用したクライアント側の暗号化 (CSE)。Athena では、このオプションに 'has_encrypted_data'='true' を指定する TBLPROPERTIES 句を使った CREATE TABLE ステートメントの使用が必要になります。詳細については、「Amazon S3 内の暗号化されたデータセットに基づいてテーブルを作成する」を参照してください。

いいえ

Amazon S3 での AWS KMS 暗号化の詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS Key Management Service とは」と「Amazon Simple Storage Service (Amazon S3) が AWS KMS を使用する方法」を参照してください。Athena での SSE-KMS または CSE-KMS の使用に関する詳細については、「AWS ビッグデータブログ」の「発表: Amazon Athena が暗号化されたデータのクエリのサポートを追加」を参照してください。

サポートされていないオプション

次の暗号化オプションはサポートされていません。

  • SSE と顧客提供のキー (SSE-C)

  • クライアント側マネージドキーを使用したクライアント側の暗号化

  • 非対称キー。

Amazon S3 の暗号化オプションを比較するには、「Amazon Simple Storage Service ユーザーガイド」の「暗号化を使用したデータの保護」を参照してください。

クライアント側の暗号化のためのツール

クライアント側の暗号化には、以下の 2 つのツールを利用できることに留意してください。

  • Amazon S3 暗号化クライアント – これは Amazon S3 のデータのみを暗号化し、Athena によってサポートされています。

  • AWS Encryption SDK – この SDK は、AWS のどこでもデータを暗号化するために使用できますが、Athena では直接サポートされていません。

これらのツールには互換性がなく、一方のツールで暗号化されたデータをもう一方のツールで復号化することはできません。Athena が直接サポートするのは Amazon S3 暗号化クライアントのみです。SDK を使用してデータを暗号化する場合、Athena からクエリを実行することはできますが、データが暗号化されたテキストとして返されます。

AWS Encryption SDK で暗号化されたデータを Athena を使用してクエリする場合は、データをダウンロードして復号化してから、Amazon S3 暗号化クライアントを使用して再度暗号化する必要があります。

Amazon S3 の暗号化されたデータに対する許可

Amazon S3 で使用する暗号化のタイプに応じて、Athena で使用されるポリシーに「Allow」アクションとしても知られる許可を追加することが必要になる場合があります。

  • SSE-S3 – 暗号化に SSE-S3 を使用する場合、Athena ユーザーのポリシーに追加の許可は必要ありません。適切な Amazon S3 の場所、および Athena のアクションに対する適切な Amazon S3 許可を持っているだけで十分です。適切な Athena および Amazon S3 の許可を可能にするポリシーの詳細については、「Amazon Athena の AWS 管理ポリシー」および「Athena から Amazon S3 へのアクセスを制御する」を参照してください。

  • AWS KMS – 暗号化に AWS KMS を使用する場合、Athena ユーザーには、Athena と Amazon S3 へのアクセス許可に加えて、特定の AWS KMS アクションの実行が許可されている必要があります。これらのアクションは、Amazon S3 内のデータの暗号化に使用される AWS KMS のカスタマーマネージドキー (CMK) のキーポリシーを編集することによって許可します。適切な AWS KMS キーポリシーにキーユーザーを追加するには、AWS KMS コンソール (https://console.aws.amazon.com/kms) を使用できます。AWS KMS キーポリシーにユーザーを追加する方法については、「AWS Key Management Service デベロッパーガイド」の「CMK の使用をキーユーザーに許可する」を参照してください。

    注記

    高度なキーポリシーの管理者は、キーポリシーを調整することができます。kms:Decrypt は、Athena ユーザーが暗号化されたデータセットを使用するために許可される最小限のアクションです。暗号化されたクエリ結果を使用する場合、許可される最小限のアクションは kms:GenerateDataKeykms:Decrypt です。

    Athena でクエリする Amazon S3 内のデータセットに AWS KMS で暗号化されたオブジェクトが大量に含まれている場合、AWS KMS はクエリ結果をスロットリングする場合があります。小さいオブジェクトが大量にある場合は特に、スロットルされる可能性が高くなります。Athena は再試行リクエストを撤回しますが、それでもスロットリングエラーが発生する可能性があります。多数の暗号化されたオブジェクトを操作しているときにこの問題が発生した場合は、Simple Storage Service (Amazon S3) バケットキーを有効にして KMS への呼び出し数を減らすのも 1 つの方法です。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 バケットキーを使用した SSE-KMS のコストの削減」を参照してください。他にも、AWS KMS のサービスクォータを引き上げることができます。詳細については、「AWS Key Management Service デベロッパーガイド」の「クォータ」を参照してください。

Athena で Amazon S3 を使用する場合の許可に関するトラブルシューティング情報については、「Athena の問題をトラブルシューティングする」トピックの「アクセス許可」セクションを参照してください。

AWS Glue データカタログの暗号化されたメタデータに対するアクセス許可

AWS Glue Data Catalog のメタデータを暗号化する場合は、Athena へのアクセスに使用する ポリシーに "kms:GenerateDataKey""kms:Decrypt"、および "kms:Encrypt" アクションを追加する必要があります。詳細については、AWS Glue Data Catalog で Athena から暗号化されたメタデータへのアクセスを構成する を参照してください。