

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

# 暗号化されていない Amazon RDS DB インスタンスとクラスターを自動的に修正する
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters"></a>

*Ajay Rawat、Josh Joy (Amazon Web Services)*

## 概要
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-summary"></a>

このパターンでは、、 AWS Systems Manager ランブック、および () AWS Key Management Service AWS KMSキーを使用して AWS Config、Amazon Web Services () の暗号化されていない Amazon Relational Database Service (Amazon RDS AWS) DB インスタンスとクラスターを自動的に修復する方法について説明します。

暗号化された RDS DB インスタンスは、基になるストレージへの不正アクセスからデータを保護することによって、データ保護の追加レイヤーを提供します。Amazon RDS 暗号化を使用して、 にデプロイされたアプリケーションのデータ保護を強化し AWS クラウド、保管時の暗号化のコンプライアンス要件を満たすことができます。RDS DB インスタンスの暗号化は作成時に有効にできますが、作成後には有効にできません。ただし、DB インスタンスのスナップショットを作成し、そのスナップショットの暗号化済みコピーを作成して、暗号化されていない RDS DB インスタンスに暗号化を追加できます。その後、暗号化されたスナップショットから DB インスタンスを復元して、元の DB インスタンスの暗号化されたコピーを取得できます。

このパターンでは AWS Config ルール 、 を使用して RDS DB インスタンスとクラスターを評価します。ランブックを使用して修復を適用します。 AWS Systems Manager ランブックは、非準拠の Amazon RDS リソースに対して実行するアクションと、DB スナップショットを暗号化するための AWS KMS キーを定義します。次に、サービスコントロールポリシー (SCP) を適用して、暗号化なしで新しい DB インスタンスやクラスターが作成されないようにします。

このパターンのコードは [GitHub](https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources) で提供されています。

## 前提条件と制限
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ このパターンの [GitHub ソースコードリポジトリ](https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources)からコンピュータにダウンロードされたファイル
+ 暗号化されていない RDS DB インスタンスまたはクラスター
+ RDS DB インスタンスとクラスターを暗号化するための既存の AWS KMS キー
+ KMS キーリソースポリシーを更新するためのアクセス
+ AWS Config で有効 AWS アカウント ( AWS ドキュメントの[「 の開始方法 AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/getting-started.html)」を参照)

**制限事項**
+ RDS DB インスタンスの暗号化は、作成後ではなく、作成時にのみ有効にできます。
+ 暗号化されていない DB インスタンスのリードレプリカを暗号化することや、暗号化されている DB インスタンスのリードレプリカを暗号化しないようにすることはできません。
+ 暗号化されていないバックアップやスナップショットを、暗号化された DB インスタンスに復元することはできません。
+ Amazon RDS 暗号化は、ほとんどの DB インスタンスクラスで使用できます。例外のリストについては、Amazon RDS ドキュメントの「[Amazon RDS リソースの暗号化](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.html)」を参照してください。
+ 暗号化されたスナップショットを AWS リージョン 間でコピーするには、送信先で KMS キーを指定する必要があります AWS リージョン。これは、KMS キーが作成された AWS リージョン に固有のためです。
+ ソーススナップショットはコピープロセス全体で暗号化されたままになります。Amazon RDS は、コピー処理中にエンベロープ暗号化を使用してデータを保護します。詳細については、 AWS KMS ドキュメントの[「エンベロープ暗号化](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)」を参照してください。
+ 暗号化された DB インスタンスの暗号化を解除することはできません。ただし、暗号化された DB インスタンスからデータをエクスポートし、暗号化されていない DB インスタンスにデータをインポートすることはできます。
+ KMS キーの削除は、そのキーをもう使用しないことが確実である場合にのみ行ってください。不明な場合は、削除するのではなく、[KMS キーを無効化する](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)ことを検討します。無効化した KMS キーは、後で使用する必要が生じた場合に再度有効化できますが、削除した KMS キーは復元できません。 
+ 自動バックアップを保持しない場合、 AWS リージョン DB インスタンスと同じ にある自動バックアップは削除されます。DB インスタンスを削除した後は、復元できません。
+ 自動バックアップは、DB インスタンスの削除時に設定した保持期間だけ保持されます。この設定された保持期間は、最終的な DB スナップショットを作成するかどうかにかかわらず発生します。
+ 自動修復が有効になっている場合、このソリューションは同じ KMS キーを持つすべてのデータベースを暗号化します。

## アーキテクチャ
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-architecture"></a>

次の図は、 CloudFormation 実装のアーキテクチャを示しています。このパターンは、 AWS Cloud Development Kit (AWS CDK)を使用して実装することもできます。

![\[暗号化されていない Amazon RDS インスタンスを修復するための AWS CloudFormation 実装。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/7f7195e3-98c4-4b18-9192-c0400ac5b891/images/8c1466fa-15b3-44ef-aa7e-7958f80cb699.png)


## ツール
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-tools"></a>

**ツール**
+ [CloudFormation](https://aws.amazon.com/cloudformation/) は、 AWS リソースを自動的にセットアップするのに役立ちます。テンプレートファイルを使用して、リソースのコレクションを 1 つのユニット (スタック) として作成および削除できます。
+ [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/) は、コードでクラウドインフラストラクチャを定義し、使い慣れたプログラミング言語を使用してプロビジョニングするための、ソフトウェア開発フレームワークです。

**AWS サービスと機能**
+ [AWS Config](https://aws.amazon.com/config/) は、 AWS リソースの設定と他のリソースとの関係を追跡します。また、これらの AWS リソースのコンプライアンスを評価することもできます。このサービスは、必要な設定に対して AWS リソースを評価するように設定できるルールを使用します。一般的なコンプライアンスシナリオには一連の AWS Config マネージドルールを使用することも、カスタムシナリオには独自のルールを作成することもできます。 AWS リソースが非準拠であることがわかったら、 AWS Systems Manager ランブックを介して修復アクションを指定し、オプションで Amazon Simple Notification Service (Amazon SNS) トピックを介してアラートを送信できます。つまり、修復アクションを に関連付け AWS Config ルール 、手動で介入することなく、非準拠のリソースに対応するために自動的に実行することを選択できます。自動修復後もリソースがまだ準拠していない場合は、自動修復を再試行するようにルールを設定できます。
+ [Amazon Relational Database Service (Amazon RDS)](https://aws.amazon.com/rds/) を使用して、クラウドでリレーショナルデータベースをセットアップ、運用、スケーリングできます。Amazon RDS の基本構成要素は DB インスタンスです。これは AWS クラウド内の独立したデータベース環境です。Amazon RDS は、さまざまなリレーショナルデータベースのユースケースに合わせて最適化された[インスタンスタイプを選択](https://aws.amazon.com/rds/instance-types/)できます。インスタンスタイプは、CPU、メモリ、ストレージ、およびネットワーク容量のさまざまな組み合わせで構成され、データベースに適したリソースの組み合わせを柔軟に選択できます。各インスタンスタイプには 1 つ以上のインスタンスサイズが含まれているため、ターゲットワークロードの要件に合わせてデータベースをスケーリングできます。
+ [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/) は、データを暗号化する作成と制御を容易に AWS KMS keysするマネージドサービスです。KMS キーは、ルートキーの論理表現です。KMS キーには、キー ID、作成日、説明、キーステータスなどのメタデータが含まれます。
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [サービスコントロールポリシー (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) では、組織のすべてのアカウントで使用可能な最大アクセス許可を一元的に制御できます。SCP は、アカウントが組織のアクセスコントロールガイドラインに従っていることを確認するのに役立ちます。SCP は、管理アカウントのユーザーやロールには影響を与えません。SCP は、組織内のメンバーアカウントにのみ影響を与えます。SCP を組織のルートにアタッチする前に、そのポリシーがアカウントに与える影響を徹底的にテストすることを強くお勧めします。代わりに、お客様のアカウントを一度に 1 つずつ、または少なくとも少人数ずつ移動できる組織単位 (OU) を作成し、誤って主要なサービスからユーザーを締め出すことのないようにします。

**コード**

このパターンのソースコードとテンプレートは、[GitHub リポジトリ](https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources/)にあります。このパターンには 2 つの実装オプションがあります。 CloudFormation テンプレートをデプロイして、RDS DB インスタンスとクラスターを暗号化する修復ロールを作成するか、 を使用できます AWS CDK。リポジトリには、これら 2 つのオプション用に別々のフォルダがあります。

「[エピック](#automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-epics)」セクションでは、CloudFormation テンプレートをデプロイするためのステップバイステップの手順について説明します。を使用する場合は AWS CDK、GitHub リポジトリの `README.md` ファイルの指示に従います。

## ベストプラクティス
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-best-practices"></a>
+ 保管時と転送中のいずれもデータ暗号化を有効にします。
+ すべてのアカウント AWS Config で と を有効にします AWS リージョン。
+ すべてのリソースタイプの設定変更を記録します。
+ IAM 認証情報のローテーションを定期的に行います。
+ のタグ付けを活用することで AWS Config、 リソースの管理、検索、フィルタリングが容易になります。

## エピック
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-epics"></a>

### IAM 修復ロールと Systems Manager ランブックを作成する
<a name="create-the-iam-remediation-role-and-sys-runbook"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| CloudFormation テンプレートをダウンロードします。 | [GitHub リポジトリ](https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources/tree/main/rds/CloudFormation)から `unencrypted-to-encrypted-rds.template.json` ファイルをダウンロードします。 | DevOps エンジニア | 
| CloudFormation スタックを更新する。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters.html)テンプレートのデプロイに関する詳細については、[CloudFormation のドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)を参照してください。 | DevOps エンジニア | 
| CloudFormation パラメータと値を確認してください。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters.html) | DevOps エンジニア | 
| リソースを確認します。 | スタックが作成されると、そのステータスは **[CREATE\$1COMPLETE]** に変わります。作成したリソース (IAM ロール、Systems Manager ランブック) を CloudFormation コンソールで確認します。 | DevOps エンジニア | 

### AWS KMS キーポリシーを更新する
<a name="update-the-kms-key-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| KMS キーポリシーを更新します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters.html)<pre>{<br />    "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS",<br />    "Effect": "Allow",<br />    "Principal": {<br />        "AWS": "arn:aws:iam:: <your-AWS-account-ID>":role/<your-IAM-remediation-role>"<br />    },<br />    "Action": [<br />        "kms:Encrypt",<br />        "kms:Decrypt",<br />        "kms:ReEncrypt*",<br />        "kms:GenerateDataKey*",<br />        "kms:CreateGrant",<br />        "kms:ListGrants",<br />        "kms:DescribeKey"<br />    ],<br />    "Resource": "*",<br />    "Condition": {<br />        "StringEquals": {<br />            "kms:ViaService": "rds.us-east-1.amazonaws.com",<br />            "kms:CallerAccount": "<your-AWS-account-ID>"<br />        }<br />    }<br />}</pre> | DevOps エンジニア | 

### 準拠していないリソースを見つけて修正する
<a name="find-and-remediate-noncompliant-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 非準拠リソースを表示します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters.html) AWS Config コンソールに表示される非準拠のリソースは、クラスターではなくインスタンスです。修復自動化はインスタンスとクラスターを暗号化し、新しく暗号化されたインスタンスまたは新しく作成されたクラスターを作成します。ただし、同じクラスターに属する複数のインスタンスを同時に修正しないように注意してください。RDS DB インスタンスまたはボリュームを修正する前に、その RDS DB インスタンスが使用されていないことを確認してください。スナップショットに元のデータが含まれていることを確認するために、スナップショットの作成中に書き込み操作が行われていないことを確認します。修正が実行されるメンテナンスの時間帯を設けることを検討してください。 | DevOps エンジニア | 
| 非準拠のリソースを修復します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters.html) | DevOps エンジニア | 
| RDS DB インスタンスが使用可能であることを確認します。 | 自動化が完了すると、新しく暗号化された RDS DB インスタンスが使用可能になります。暗号化された RDS DB インスタンスには、プレフィックスの後に元の名前が `encrypted` 続きます。例えば、暗号化されていない RDS DB インスタンス名が `database-1` の場合、新しく暗号化された RDS DB インスタンスは `encrypted-database-1` になります。 | DevOps エンジニア | 
| 暗号化されていないインスタンスを終了します。 | 修正が完了し、新しく暗号化されたリソースが検証されたら、暗号化されていないインスタンスを終了できます。リソースを終了する前に、新しく暗号化されたリソースが暗号化されていないリソースと一致することを確認してください。 | DevOps エンジニア | 

### SCP を強制する
<a name="enforce-scps"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| SCP を強制します。 | SCP を適用して、future DB インスタンスやクラスターが暗号化なしで作成されないようにします。この目的には [GitHub リポジトリ](https://github.com/aws-samples/aws-system-manager-automation-unencrypted-to-encrypted-resources/tree/main/rds/SCP)で提供されている `rds_encrypted.json` ファイルを使用し、[AWS ドキュメント](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html)の指示に従ってください。  | セキュリティエンジニア | 

## 関連リソース
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-resources"></a>

**リファレンス**
+ [セットアップ AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [AWS Config カスタムルール](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html)
+ [AWS KMS の概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)
+ [AWS Systems Manager ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)
+ [サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)

**ツール**
+ [CloudFormation](https://aws.amazon.com/cloudformation/)
+ [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk/)

**ガイドとパターン**
+ [でカスタム修復ルール AWS CloudTrail を使用して自動的に再有効化する AWS Config](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/automatically-re-enable-aws-cloudtrail-by-using-a-custom-remediation-rule-in-aws-config.html)

## 追加情報
<a name="automatically-remediate-unencrypted-amazon-rds-db-instances-and-clusters-additional"></a>

**の AWS Config 仕組み**

を使用すると AWS Config、まず アカウントに存在するサポートされている AWS リソースを検出し、各リソース[の設定項目](https://docs.aws.amazon.com/config/latest/developerguide/config-concepts.html#config-items)を生成します。 AWS Config また、 はリソースの設定が変更されると設定項目を生成し、設定レコーダーを起動したときからリソースの設定項目の履歴レコードを維持します。デフォルトでは、 は でサポートされているすべてのリソースの設定項目 AWS Config を作成します AWS リージョン。サポートされているすべてのリソースの設定項目 AWS Config を作成しない場合は、追跡するリソースタイプを指定できます。

** AWS Config と の AWS Config ルール 関係 AWS Security Hub CSPM**

AWS Security Hub CSPM は、セキュリティおよびコンプライアンス体制の管理をサービスとして提供するセキュリティおよびコンプライアンスサービスです。 AWS Config と を主要なメカニズム AWS Config ルール として使用して、 AWS リソースの設定を評価します。 は、リソース設定を直接評価するために AWS Config ルール も使用できます。 AWS Control Tower や AWS のサービスなどの他の AWS Firewall Managerも使用します AWS Config ルール。