MEGAZONE

MEGAZONEブログ

Better together: Using encryption & authorization for data protection
re:Invent 2023 Security/Compliance & Identity

Better together: Using encryption & authorization for data protection

Pulisher : Cloud Technology Center イ・イェウン
Description : データ保護に重点を置いたAWS KMS、IAM、AWS Nitro Systemの機能およびポリシーの紹介セッション

このセッションを通じてデータ保護に重点を置き、AWS KMS、IAM、AWS Nitro Systemの機能とポリシーを深く理解し、内蔵されたデータを保護するための暗号化と権限付与の方法を習得したいと思い、このセッションを申し込みました。

このセッションでは、最小限の権限実行、開発スピードを落とさないコンプライアンス、データアクセスに関する実例をいくつか共有するセッションでした。

まず、サンプルとなるアプリケーションについて説明しました。目的に合ったAWSアカウント、VPC、AWS SDKを使用して古いEC2にアプリケーションを構築し、S3ではマーケティング調査結果、Dynamo DBを使用して顧客を様々なセグメントにマッピングするように設計しました。

まず、複数次元での最小限の権限実行(Enforcing least privilege across multiple dimensions)であり、認証されたユーザーまたはユーザー自身に代わってデータが動作するため、適切なアプリケーションにのみアクセスされることを確認するための方法を説明し、IAMの役割を使用して、アプリケーションが適切なリソースにのみアクセスできるように権限を付与し、IAMが短期間の資格情報を生成して回転させる機能について説明しました。

次に、特定のKMSキーを使用してデータが暗号化されているかどうかを確認する方法、特定のVPCを構築し、そのVPCを通じて機密性の高いリソースに接続するためにVPCエンドポイントを使用してパブリックサブネットとインターネットゲートウェイを削除し、機密データに対するポリシー強化ポイントとして使用する方法について説明しました。 また、IAMの意思決定プロセスに追加的なコンテキストを提供するためにVPCエンドポイントを活用し、ネットワークロケーションに基づく権限を付与する方法についても説明しました。

この部分では、データを暗号化する方法について説明しました。

主に2つの主な作業が必要でした。 まず、アプリケーションがこの鍵を使用できるように権限を付与する必要があります。 これはKMSキーポリシーで定義され、使用目的および鍵を管理する主体を明示します。 また、鍵を使用すること自体が許可された作業であることを強調しました。

KMSキーポリシーは、他のリソースベースのポリシーとは異なる特別な特徴があり、これは後でKevinがより深く掘り下げるときに再び登場します。 特に、KMSとIAMの役割は非常にセキュリティ中心のリソースであるため、リソースベースのポリシーがここに適用されなければならないという違いがあります。

最後に、実際にアプリケーションがKMSと直接通信するのではなく、S3を真ん中に置いていることを言及し、これはforward access sessionという技術を活用して行われることを説明しました。 この技術は、セキュリティと識別関連機能を向上させ、特に権限を尊重しながら、KMSでユーザーとS3を同時に区別できるようにすると話しました。

次に、データが特定の上位レベルのガードレールの条件でのみアクセスされることを確認することについて確認しました。AWS組織と関連するサービス制御ポリシーを使用して高レベルのガードレールを設定し、特にサービス制御ポリシーはアカウント間の最大許可権限を調整するために使用することを説明しました。

また、動的アプリケーションタイプの制御として、セキュリティ資格情報をインスタンスに固定させる方法を紹介しました。 これは、IAMが資格情報をインスタンスに渡し、その情報を使用してポリシーを作成し、インスタンスとVPCで発行された資格情報のみが使用されるようにする方法です。

次に、鍵をどのように管理すべきかについて説明しました。

まず、分散されたチームがアプリケーションを構築するために必要な要件と、セキュリティチームがデータセキュリティについて保証できることのバランスについて話しました。

データキーをどこに保存すべきかについてのコンプライアンスの観点からは、AWS KMSを使うことを推奨しました。

鍵を生成したアカウントで使用する方法と、中央アカウントで厳格な物理的制御を通じて鍵を制限する方法を比較し、鍵を生成したアカウントで鍵の使用に対する自由を与える方が柔軟性が向上し、権限の問題を減らすのに役立ち、中央セキュリティチームは監視と制御に集中できるようになります。後者の場合、キーと一緒にログが集中化されるため、別途の作業なしで集中化されたセキュリティ監査を行うことができます。 どのモデルを選択するかは、運用可能性と制御可能性の交換に関するものであり、管理負担について考える必要があると述べました。

最終的に、適切なプロセスと監査メカニズムが重要であり、AWS Config、Security Hub、IAM Access AnalyzerなどのAWSサービスを活用して適切な管理モデルを構築することができると話しました。 チームは、単に鍵自体を管理するのではなく、適切なツールとプロセスを構築して適切な行動と鍵管理を強化する必要があるとさらに言及しました。

次に、システム管理者やオペレータからデータを保護する方法について説明しました。 特に、個々の個人がポリシーを修正できないシナリオでデータを保護するための取り組みについて重点的に説明しました。

KMS内で権限分離の概念を使用して、キーポリシー内でこれを適用することができます。 (権限分離とは、キーを使用できるユーザーとキー自体を管理できるユーザーを区別することを意味します。)

AWS KMSのユニークな特性の1つは、キーを使用するには明示的な許可文が必要であるということです。 この特性を使用して、データに対する第2の論理的なコントロールを作成することができます。 特に、S3バケットへのアクセスを所有しているユーザーは、IAMポリシーによって管理されるデータに対する第1の制御層です。 しかし、KMSキーを追加することで、キーを介したアクセスが必要になり、キー所有者はキーポリシーを直接管理し、キーユーザーは変更を行うことができなくなります。

しかし、このアプローチはKMSの観点からのみ問題を解決し、ユーザーの本来のアイデンティティを識別するために追加のステップが必要です。これを解決するために、AWS Identity Centerを使用して、ユーザーの資格情報を組織内の適切な役割やグループにマッピングすることができると述べました。

この部分では、データ自体の保護に重点を置き、データが第三者に公開されないようにデータをエンドツーエンドで暗号化する方法について説明しました。クライアント側暗号化を使用して、データを生成時に即座に暗号化し、処理する必要があるときに復号化し、設計に複雑さを導入することができます。

AWSでは、クライアント側の暗号化を実行するために、2つの優れた暗号化SDKを提供していると述べました。 第一に、「Encryption SDK」で、使いやすく、誤用しにくく、正しいアルゴリズムを選択してくれるので、複雑な決定を下す必要がありません。二つ目は「Database Encryption SDK」で、以前のSDKと同じ概念ですが、構造化されたデータに重点を置き、特にDynamo DBのようなデータベースのために設計されました。

これらを既存のアーキテクチャに統合し、データのエンドツーエンドの暗号化を追加しました。 ただし、キーレベルからシステムレベルの権限付与範囲を縮小したに過ぎず、元のシステム管理者とオペレータがお互いに含まれ、キーとデータにアクセスできる状況を防ぐための追加措置が必要であると述べています。

最後に、データが使用中または処理中であっても、システム管理者やオペレータからデータを保護する方法について説明しました。 そして、「機密コンピューティング」という新しいトピックを紹介します。これは、特殊なハードウェアと関連するファームウェアを使用してデータを処理中に保護するもので、データの静止状態について詳しく説明しますが、データが処理中に保護されるようにすることに重点を置いています。

「機密コンピューティング」には2つの主要な内容があります。1つ目は、私たちのようなクラウドオペレーターからデータやコードを保護すること、2つ目は、ユーザーのオペレーターや管理者から機密データやコードを保護することです。 ここで「Nitro Enclaves」が登場し、非常に隔離された制限された仮想マシンで、使用中のアプリケーション内でデータをさらに隔離します。

Nitro Enclavesは、親インスタンスからCPUとメモリの一部を分離して作成され、VSOCと呼ばれる安全なローカルチャネルを介して親インスタンスと通信します。Nitro Enclavesにはネットワークや永続的なストレージ、ルートアクセスがないため、ブラックボックスと見なすことができます。Nitro Enclavesは起動時に自己の測定を行い、これらの測定値をハッシュ値として計算し、アテステートメントドキュメントに記録します。

最後に、Nitro Enclavesを使用してデータへのアクセスを検証するために「AWS Key Management Service (KMS)」が提供する機能を活用し、Enclaveは実行中のインスタンスの正確なソフトウェアだけがデータにアクセスすることを保証するために、暗号化を使用して実行中のEnclaveのアイデンティティを証明することができると述べました。Enclaveの起動時に生成されたattestation documentを検証し、これをKMSで確認し、ポリシーと一致することを確認した後、キーへのアクセスを付与することができ、このようなプロセスを通じてデータへの厳格なアクセス制御を実装し、システムレベルからキーとデータにアクセスできる実際のソフトウェアの身元まで確認するセキュリティ方法について紹介し、セッションは終了しました。

このセッションを通じて、データ保護に対する細分化されたコントロールと深い理解を得ることができました。 特に、AWS KMS、IAM、そしてNitro Enclavesのような技術的な側面についての新しい情報を習得しました。 また、国内での活用可能性についての悩みが生じ、今後、これらの技術をどのように適用するかについて検討しなければならないと思いました。

ブログ一覧

この記事の読者はこんな記事も読んでいます