

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

# クラウドカストディアンを使用して Amazon RDS へのパブリックアクセスをブロック
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian"></a>

*Abhay Kumar、Dwarika Patra (Amazon Web Services)*

## 概要
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-summary"></a>

多くの組織がワークロードとサービスを複数のクラウドベンダーで実行しています。このようなハイブリッドクラウド環境では、個々のクラウドプロバイダーが提供するセキュリティに加えて、クラウドインフラストラクチャには厳格なクラウドガバナンスが必要です。Amazon Relational Database Service (Amazon RDS) のようなクラウドデータベースは、アクセスや許可に関する脆弱性がないか監視する必要がある重要なサービスの1つです。セキュリティグループを設定することで Amazon RDS データベースへのアクセスを制限できますが、2 つ目の保護レイヤーを追加してパブリックアクセスなどのアクションを禁止することもできます。パブリックアクセスをブロックすると、一般データ保護規則 (GDPR)、Health Insurance Portability and Accountability Act (HIPAA)、米国国立標準技術研究所 (NIST)、Payment Card Industry Data Security Standard (PCI DSS) に準拠するのに役立ちます。

Cloud Custodian は、Amazon RDS などの Amazon Web Services (AWS) リソースにアクセス制限を適用するために使用できるオープンソースのルールエンジンです。Cloud Custodian では、定義されたセキュリティおよびコンプライアンス基準に照らして環境を検証するルールを設定できます。Cloud Custodian を使用すると、セキュリティポリシー、タグポリシーの順守、未使用リソースのガベージコレクション、コスト管理を実現することで、クラウド環境を管理できます。Cloud Custodian を使用すると、単一のインターフェイスでハイブリッドクラウド環境にガバナンスを実装できます。例えば、Cloud Custodian インターフェイスを使用して AWS および Microsoft Azure とやり取りし AWS Config、 AWS セキュリティグループや Azure ポリシーなどのメカニズムを使用する労力を減らすことができます。

このパターンでは、 で Cloud Custodian AWS を使用して Amazon RDS インスタンスにパブリックアクセシビリティの制限を適用する手順を示します。

## 前提条件と制限
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ 「[キーペア](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-creds-create)」 
+ AWS Lambda インストール済み

## アーキテクチャ
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-architecture"></a>

次の図は、Amazon RDS での Cloud Custodian によるポリシーのデプロイ AWS Lambda、`CreateDBInstance`イベント AWS CloudTrail の開始、Lambda 関数設定の `PubliclyAccessible` false を示しています。

![AWS で Cloud Custodian を使用して Amazon RDS インスタンスへのパブリックアクセスを制限します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/90f9537e-9365-4da2-8a28-da0ff374743c/images/6d04ca3b-6aa4-4c62-ade9-8b7474928c5e.png)


## ツール
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-tools"></a>

**AWS のサービス**
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) は、 のガバナンス、コンプライアンス、運用リスクを監査するのに役立ちます AWS アカウント。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) は、コマンドラインシェルのコマンド AWS のサービス を通じて を操作するのに役立つオープンソースツールです。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用を認可するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、 AWS クラウドでリレーショナルデータベースをセットアップ、運用、スケーリングできます。

その他のツール
+ 「[Cloud Custodian](https://cloudcustodian.io/)」 は、多くの組織がパブリッククラウドアカウントの管理に使用しているツールとスクリプトを 1 つのオープンソースツールに統合します。ポリシーの定義と実施にはステートレスなルールエンジンを使用し、クラウドインフラストラクチャの指標、構造化された出力、詳細なレポート機能を備えています。サーバーレスランタイムと緊密に統合されているため、運用上のオーバーヘッドを低く抑えながらリアルタイムの修復と対応が可能です。

## エピック
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-epics"></a>

### のセットアップ AWS CLI
<a name="set-up-the-cli"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| をインストールします AWS CLI。 | をインストールするには AWS CLI、 [AWS ドキュメント](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)の指示に従います。 | AWS 管理者 | 
|  AWS 認証情報を設定します。 | や使用する AWS リージョン 出力形式など AWS、 が操作 AWS CLI に使用する設定を構成します。<pre>$>aws configure<br />AWS Access Key ID [None]: <your_access_key_id><br />AWS Secret Access Key [None]: <your_secret_access_key><br />Default region name [None]:<br />Default output format [None]:</pre><br />詳細については、[AWS のドキュメント](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)を参照してください。 | AWS 管理者 | 
| IAM ロールを作成します。 | Lambda 実行ロールを使用して IAM ロールを作成するには、次のコマンドを実行します。<pre>aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}</pre> | AWS DevOps | 

### クラウドカストディアンをセットアップする
<a name="set-up-cloud-custodian"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| クラウドカストディアンをインストールします。 | ご使用のオペレーティングシステムと環境に Cloud Custodian をインストールするには、「[Cloud Custodian ドキュメント](https://cloudcustodian.io/docs/quickstart/index.html#install-cc)」 の指示に従ってください。 | DevOps エンジニア | 
| クラウドカストディアンスキーマをチェックします。 | ポリシーを実行できる Amazon RDS リソースの完全なリストを確認するには、以下のコマンドを使用します。<pre>custodian schema aws.rds</pre> | DevOps エンジニア | 
| クラウドカストディアンポリシーを作成します。 | *Cloud Custodian ポリシーファイル*にあるコードを YAML 拡張子を使用して[追加情報](#block-public-access-to-amazon-rds-by-using-cloud-custodian-additional)セクションに保存します。 | DevOps エンジニア | 
| パブリックにアクセス可能なフラグを変更するクラウドカストディアンアクションを定義します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/block-public-access-to-amazon-rds-by-using-cloud-custodian.html) | DevOps エンジニア | 
| リサルの実行を行います。 | (オプション) リソースに対してアクションを実行せずに、ポリシーによってどのリソースが識別されているかを確認するには、以下のコマンドを使用します。<pre>custodian run -dryrun <policy_name>.yaml -s <output_directory></pre> | DevOps エンジニア | 

### ポリシーをデプロイします。
<a name="deploy-the-policy"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Lambda を使用してポリシーをデプロイします。 | ポリシーを実行する Lambda 関数を作成するには、次のコマンドを使用します。<pre>custodian run -s policy.yaml</pre><br />その後、このポリシーは イベントによって開始されます AWS CloudTrail `CreateDBInstance`。<br />その結果、 AWS Lambda は条件に一致するインスタンス`false`のパブリックアクセス可能なフラグを に設定します。 | DevOps エンジニア | 

## 関連リソース
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-resources"></a>
+ [AWS Lambda website](https://aws.amazon.com/lambda/)
+ [Amazon RDS ウェブサイト](https://aws.amazon.com/rds/)
+ [Cloud Custodian のドキュメント](https://cloudcustodian.io/docs/quickstart/index.html)

## 追加情報
<a name="block-public-access-to-amazon-rds-by-using-cloud-custodian-additional"></a>

クラウドカストディアンポリシー (YAML ファイル)

```
policies:
  - name: "block-public-access"
    resource: rds
    description: |
      This Enforcement blocks public access for RDS instances.
    mode:
      type: cloudtrail
      events:
        - event: CreateDBInstance # Create RDS instance cloudtrail event
          source: rds.amazonaws.com
          ids: requestParameters.dBInstanceIdentifier
      role: arn:aws:iam::1234567890:role/Custodian-compliance-role
    filters:
      - type: event
        key: 'detail.requestParameters.publiclyAccessible'
        value: true
    actions:
      - type: set-public-access
        state: false
```

c7n リソース rds.py ファイル

```
@actions.register('set-public-access')
 class RDSSetPublicAvailability(BaseAction):
 
     schema = type_schema(
         "set-public-access",
         state={'type': 'boolean'})
     permissions = ('rds:ModifyDBInstance',)
 
     def set_accessibility(self, r):
         client = local_session(self.manager.session_factory).client('rds')
         waiter = client.get_waiter('db_instance_available')
         waiter.wait(DBInstanceIdentifier=r['DBInstanceIdentifier'])
         client.modify_db_instance(
             DBInstanceIdentifier=r['DBInstanceIdentifier'],
             PubliclyAccessible=self.data.get('state', False))
 
 
     def process(self, rds):
         with self.executor_factory(max_workers=2) as w:
             futures = {w.submit(self.set_accessibility, r): r for r in rds}
             for f in as_completed(futures):
                 if f.exception():
                     self.log.error(
                         "Exception setting public access on %s  \n %s",
                         futures[f]['DBInstanceIdentifier'], f.exception())
         return rds
```

**Security Hub CSPM 統合**

Cloud Custodian を [AWS Security Hub CSPM](https://aws.amazon.com/security-hub/) と統合して、セキュリティ検出結果を送信し、修復アクションを試みることができます。詳細については、[「 とのクラウドカストディアン統合の発表 AWS Security Hub CSPM](https://aws.amazon.com/blogs/opensource/announcing-cloud-custodian-integration-aws-security-hub/)」を参照してください。