既存の Amazon ボリュームと新しい Amazon EBSボリュームを自動的に暗号化する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

既存の Amazon ボリュームと新しい Amazon EBSボリュームを自動的に暗号化する

作成者: Tony DeMarco (AWS) と Josh Joy (AWS)

コードリポジトリ: https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources/tree/main/ebs

環境:本稼働

テクノロジー: ストレージとバックアップ、セキュリティ、アイデンティティ、コンプライアンス、管理とガバナンス

AWS サービス: AWS Config、Amazon、EBSAWSKMS、AWSOrganizations、AWSSystems Manager

[概要]

Amazon Elastic Block Store (Amazon EBS) ボリュームの暗号化は、組織のデータ保護戦略にとって重要です。これは、アーキテクチャが適切に設計された環境を確立するための重要なステップです。既存の暗号化されていないEBSボリュームやスナップショットを直接暗号化する方法はありませんが、新しいボリュームやスナップショットを作成することで暗号化できます。詳細については、Amazon EC2ドキュメントのEBS「リソースの暗号化」を参照してください。このパターンは、新規および既存の両方のEBSボリュームを暗号化するための予防的および検出的なコントロールを提供します。このパターンでは、アカウント設定の設定、自動修復プロセスの作成、アクセス制御の実装を行います。

前提条件と制限

前提条件

  • アクティブな Amazon Web Services (AWS) アカウント

  • macOS 、Linux、または Windows にインストールおよび設定されているAWSコマンドラインインターフェイス (AWS CLI)

  • macOS、Linux、または Windows にインストールおよび設定されている jq

  • AWS Identity and Access Management (IAM) アクセス許可は、、Amazon Elastic Compute Cloud (Amazon EC2)AWS CloudFormation、AWSSystems Manager、AWSConfig、および AWS Key Management Service (AWS KMS) への読み取りおよび書き込みアクセスを持つようにプロビジョニングされます。

  • AWS 組織は、サービスコントロールポリシーの要件であるすべての機能を有効にして設定されます。

  • AWS Config はターゲットアカウントで有効になっています

制約事項

  • ターゲットAWSアカウントには、暗号化ボリューム という名前AWSの Config ルールがあってはなりません。この解決策はこの名前のルールをデプロイします。この名前のルールが既に存在していると、デプロイが失敗し、同じルールを複数回処理することに関連して不要な料金が発生する可能性があります。

  • このソリューションは、同じAWSKMSキーですべてのEBSボリュームを暗号化します。

  • アカウントのEBSボリュームの暗号化を有効にする場合、この設定はリージョン固有です。AWS リージョンに対して有効にした場合、そのリージョン内の個々のボリュームまたはスナップショットに対して無効にすることはできません。詳細については、Amazon EC2ドキュメントの「デフォルトでの暗号化」を参照してください。

  • 暗号化されていない既存のEBSボリュームを修正する場合は、EC2インスタンスが使用されていないことを確認してください。この自動化によってインスタンスがシャットダウンされ、暗号化されていないボリュームがデタッチされ、暗号化されたボリュームがアタッチされます。修正中はダウンタイムが発生します。これが組織にとって重要なインフラストラクチャである場合は、インスタンスで実行されているアプリケーションの可用性に影響を与えないように、手動または自動の高可用性構成を実施してください。重要なリソースは、標準のメンテナンス時間帯にのみ修正することをお勧めします。

アーキテクチャ

自動化ワークフロー

自動化プロセスとサービスを示す高レベルのアーキテクチャ図
  1. AWS Config は暗号化されていないEBSボリュームを検出します。

  2. 管理者は Config を使用して、Systems Manager AWS に修復コマンドを送信します。

  3. Systems Manager オートメーションは、暗号化されていないEBSボリュームのスナップショットを取得します。

  4. Systems Manager オートメーションは、 AWSKMSを使用してスナップショットの暗号化されたコピーを作成します。

  5. Systems Manager の自動化は次のことを行います。

    1. 実行中であれば、影響を受けるEC2インスタンスを停止する

    2. ボリュームの新しい暗号化されたコピーをEC2インスタンスにアタッチします

    3. EC2 インスタンスを元の状態に戻す

ツール

AWS サービス

  • AWS CLI – コマンドラインインターフェイス (AWS CLI) AWS は、 AWS サービスのパブリックアプリケーションプログラミングインターフェイス (APIs) への直接アクセスを提供します。を使用してサービスの機能を調べAWSCLI、リソースを管理するシェルスクリプトを開発できます。低レベルの API等価コマンドに加えて、 のカスタマイズを提供するAWSサービスがいくつかありますAWSCLI。カスタマイズには、複雑な のサービスの使用を簡素化する高レベルのコマンドを含めることができますAPI。

  • AWS CloudFormation – AWS CloudFormation は、AWSリソースのモデル化とセットアップに役立つサービスです。必要なすべてのAWSリソース (Amazon EC2インスタンスなど) を記述し、それらのリソースを CloudFormation プロビジョニングして設定するテンプレートを作成します。

  • AWS Config – AWS Config は、AWSアカウント内のAWSリソースの設定の詳細ビューを提供します。これには、リソース間の関係と設定の履歴が含まれるため、時間の経過と共に設定と関係がどのように変わるかを確認できます。

  • Amazon EC2 – Amazon Elastic Compute Cloud (Amazon EC2) は、ソフトウェアシステムの構築とホストに使用するサイズ変更可能なコンピューティング容量を提供するウェブサービスです。

  • AWS KMS – AWS Key Management Service (AWS KMS) は、クラウド用にスケーリングされた暗号化およびキー管理サービスです。AWS KMS キーと機能は他の AWSサービスで使用され、環境内のデータを保護するために使用できますAWS。

  • AWS Organizations – AWS Organizations は、複数のアカウントを、作成して一元管理する組織に集約できるAWSアカウント管理サービスです。

  • AWS Systems Manager Automation – Systems Manager Automation は、Amazon EC2インスタンスやその他のAWSリソースの一般的なメンテナンスおよびデプロイタスクを簡素化します。

その他のサービス

  • jq – jq は軽量で柔軟なコマンドラインJSONプロセッサです。このツールを使用して、AWSCLI出力からキー情報を抽出します。

コード

エピック

タスク説明必要なスキル

スクリプトと CloudFormation テンプレートをダウンロードします。

シェルスクリプト、JSONファイル、 CloudFormation テンプレートを、 GitHub カスタマーKMSキーリポジトリを使用して暗号化されていないEBSボリュームを自動的に修正する からダウンロードします。

AWS 管理者、全般 AWS

AWS KMS キーの管理者を特定します。

  1. AWS マネジメントコンソールにサインインし、 でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  2. AWS KMS キー管理者になるユーザーまたはロールを特定します。この目的で新しいユーザーまたはロールを作成する必要がある場合は、今すぐ作成してください。詳細については、IAMドキュメントのIAM「アイデンティティ」を参照してください。この自動化により、新しいAWSKMSキーが作成されます。

  3. 識別したら、ユーザーまたはロールの Amazon リソースネーム () をコピーしますARN。詳細については、 IAMドキュメントIAMARNsの「」を参照してください。次のステップARNでこれを使用します。

AWS 管理者、全般 AWS

Stack1 CloudFormation template をデプロイします。

  1. でAWS CloudFormation コンソールを開きますhttps://console.aws.amazon.com/cloudformation/

  2. で CloudFormation、 Stack1.yaml テンプレートをデプロイします。次のデプロイメントの詳細に留意してください。

    • スタックにはわかりやすい名前を付けてください。次のステップで必要になるため、スタック名を書きとめておきます。

    • キー管理者ARNの を Stack1 の唯一のパラメータフィールドに貼り付けます。このユーザーまたはロールは、スタックによって作成されたAWSKMSキーの管理者になります。

CloudFormation テンプレートのデプロイの詳細については、 CloudFormation ドキュメントのAWS CloudFormation 「テンプレートの使用」を参照してください。

AWS 管理者、全般 AWS

Stack2 CloudFormation template をデプロイします。

で CloudFormation、 Stack2.yaml テンプレートをデプロイします。次のデプロイメントの詳細に留意してください。

  • スタックにはわかりやすい名前を付けてください。

  • Stack2 の唯一のパラメータには、前のステップで作成したスタックの名前を入力します。これにより、Stack2 は前のステップでスタックによってデプロイされた新しいAWSKMSキーとロールを参照できます。

AWS 管理者、全般 AWS

テスト用に暗号化されていないボリュームを作成する。

暗号化されていないEBSボリュームを持つEC2インスタンスを作成します。手順については、「Amazon ドキュメント」の「Amazon EBSボリュームの作成」を参照してください。 EC2インスタンスタイプは関係なく、インスタンスへのアクセスも必要ありません。t2.micro インスタンスを作成して無料利用枠のままにしておくことができ、key pair を作成する必要はありません。

AWS 管理者、全般 AWS

Config AWS ルールをテストします。

  1. で AWS Config コンソールを開きますhttps://console.aws.amazon.com/config/[ルール] ページで、encrypted-volumes ルールを選択します。

  2. 暗号化されていない新しいテストインスタンスが非準拠リソースのリストに表示されていることを確認します。ボリュームがすぐに表示されない場合は、数分待ってから結果を更新します。Config AWS ルールは、インスタンスとボリュームの作成直後にリソースの変更を検出します。

  3. リソースを選択し、[修復] を選択します。

Systems Manager では、修復の進行状況とステータスを次のように表示できます。

  1. で AWS Systems Manager コンソールを開きますhttps://console.aws.amazon.com/systems-manager/

  2. ナビゲーションペインで [オートメーション] を選択します。

  3. Execution ID リンクを選択すると、手順とステータスが表示されます。 

AWS 管理者、全般 AWS

追加のアカウントまたはAWSリージョンを設定します。

ユースケースで必要に応じて、追加のアカウントまたはAWSリージョンに対してこのエピックを繰り返します。

AWS 管理者、全般 AWS
タスク説明必要なスキル

有効スクリプトを実行する。

  1. Bash シェルで、cd コマンドを使用してクローンされたリポジトリに移動します。

  2. 次のコマンドを入力して enable-ebs-encryption-for-account スクリプトを実行します。

    ./Bash/enable-ebs-encryption-for-account.sh
AWS 管理者、一般 AWS、bash

設定が更新されたことを確認する。

  1. で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/

  2. 画面の右側にある設定 で、データ保護とセキュリティ を選択します。

  3. EBS 暗号化セクションで、常に新しいEBSボリュームの暗号化が有効になっていること、およびデフォルトの暗号化キーが以前に指定した に設定ARNされていることを確認します。

    : 新しいEBSボリューム設定の暗号化が常にオフになっている場合、またはキーがエイリアス/aws/ebs にまだ設定されている場合は、シェルスクリプトを実行したのと同じアカウントとAWSリージョンにログインし、シェルにエラーメッセージがないことを確認します。

AWS 管理者、全般 AWS

追加のアカウントまたはAWSリージョンを設定します。

ユースケースで必要に応じて、追加のアカウントまたはAWSリージョンに対してこのエピックを繰り返します。

AWS 管理者、全般 AWS
タスク説明必要なスキル

サービスコントロールポリシーを作成する。

  1. https://console.aws.amazon.com/organizations/v2/ で AWS Organizations コンソールを開きます。

  2. 新しいサービスコントロールポリシーを作成します。詳細については、AWS「 Organizations ドキュメント」の「サービスコントロールポリシーの作成」を参照してください。

  3. DenyUnencryptedEC2.json の内容をポリシーに追加して保存します。このJSONファイルは、最初のエピックの GitHub リポジトリからダウンロードしました。

  4. このポリシーを組織のルートまたは必要な組織単位 () にアタッチしますOUs。詳細については、AWS「 Organizations ドキュメント」の「サービスコントロールポリシーのアタッチとデタッチ」を参照してください。

AWS 管理者、全般 AWS

関連リソース

AWS サービスドキュメント

その他のリソース