[アップデート] 委任したメンバーアカウントで Config ルール/適合パックを Organizations 組織全体にデプロイできるようになりました

2020.06.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

特定のメンバーアカウントをOrganizations 組織の 「委任管理者」 に指定することで、 メンバーアカウントからConfigルール/適合パックを組織全体にデプロイ できるようになりました。

なにが嬉しいのか?

組織全体の Configルール/適合パックの展開・管理をメンバーアカウントで行えるようになりました。

「最小限の特権の原則」のセキュリティベストプラクティスに基づいて、メンバーアカウントに委任できます。

もう少し詳しく

Config ルール/適合パック は Config で管理しているリソースが「あるべき姿に準拠しているかどうか」 をチェック(場合によって修復) するために役立つ機能です。詳細は下記が参考になります。

この Configルール/適合パックを 組織内の全アカウントに一括で展開する方法が増えました。

  1. 【マスターアカウント管理】CloufFormation StackSets で組織内にデプロイ
  2. 【マスターアカウント管理】ConfigのAPI PutOrganizationConfigRule で組織内にデプロイ
  3. new!!! 【メンバーアカウント(as 委任管理者)】ConfigのAPI PutOrganizationConfigRule で組織内にデプロイ

方法1は、CFnテンプレートで Configルールや修復アクションを記述して、"マスターアカウントで" 組織内にデプロイする方法です。

方法2は 去年7月に実装された機能で、 "マスターアカウントで" PutOrganizationConfigRule (AWS CLI: aws configservice put-organization-config-rule ) を使うことで組織内全アカウントに Configルール を展開できるものです。

方法3が今回のアップデートで出来るようになりました。 特定のメンバーアカウントを 委任管理者 に登録できます。 委任管理者のアカウントから「方法2」同様に組織全体に Configルール/適合パックを展開できるようになります。

img

実際にやってみる

組織内の全アカウント(東京リージョン) に Configルールを展開してみます。

前提

  • ルールを適用するリージョンで、組織内全アカウントで Configが有効になっていること
  • マスターアカウントでアグリゲーターの設定済であること
  • 実施したときの AWS CLIバージョンは 2.0.18

アグリゲーター(Organizations連携) のセットアップは下記参照ください。

Organizationsの「信頼されたアクセス」を編集する

"マスターアカウント環境" で AWS CLIを使っていきます。 以下コマンドを実行しましょう。

aws organizations enable-aws-service-access --service-principal config-multiaccountsetup.amazonaws.com

【注意その1】2020/06/04時点で Organizations マネジメントコンソール [設定] > [AWS のサービスに対する信頼されたアクセス] からは設定できません。

【注意その2】Organizations マネジメントコンソール [設定] > [AWS のサービスに対する信頼されたアクセス] にある [AWS Config] とは違います。 こちらは "config.amazonaws.com" 、アグリゲーターを使うときなどに必要なアクセスです。今回は "config-multiaccountsetup.amazonaws.com" 。

▼ 確認コマンドはこちら

$ aws organizations list-aws-service-access-for-organization --output text
︙
ENABLEDSERVICEPRINCIPALS	2020-06-04T11:53:02.081000+09:00	config-multiaccountsetup.amazonaws.com <---
ENABLEDSERVICEPRINCIPALS	2020-04-13T11:12:48.212000+09:00	config.amazonaws.com
︙

委任管理者の設定

"マスターアカウント環境" で AWS CLIを使っていきます。 以下のようなコマンドを実行します。

aws organizations register-delegated-administrator --account-id ${委任管理者アカウントID} --service-principal config-multiaccountsetup.amazonaws.com
  • --account-id … 委任管理者とするメンバーアカウントのアカウントID
  • --service-principal … config-multiaccountsetup.amazonaws.com

ちゃんと委任管理者となっているか、以下コマンドで行います。

$ aws organizations list-delegated-services-for-account --account-id ${委任管理者アカウントID} --output text
︙
DELEGATEDSERVICES	2020-06-04T12:03:29.249000+09:00	config-multiaccountsetup.amazonaws.com <---
DELEGATEDSERVICES	2020-05-08T17:17:45.550000+09:00	guardduty.amazonaws.com
︙

ConfigルールのPUT

"委任管理者の環境" で AWS CLIを使っていきます。 今回は AWS管理のルール s3-bucket-server-side-encryption-enabled (S3バケットのデフォルト暗号化が有効になっているか) を組織に展開してみます。

以下コマンドを実行します。

aws configservice put-organization-config-rule \
--organization-config-rule-name org-s3-bucket-server-side-encryption-enabled \
--organization-managed-rule-metadata \
Description="Amazon S3 バケットで S3 デフォルトの暗号化が有効になっているか、S3 バケットポリシーがサーバー側の暗号化なしで put-object リクエストを明示的に拒否していることを確認します。",\
ResourceTypesScope="AWS::S3::Bucket",\
RuleIdentifier="S3_BUCKET_SERVER_SIDE_ENCRYPTION_ENABLED"

返り値は以下のような Config Rule の ARNです。

{
    "OrganizationConfigRuleArn": "arn:aws:config:ap-northeast-1:xxxxxxxxxxxx:organization-config-rule/org-s3-bucket-server-side-encryption-enabled-cxabcdefg"
}

確認

マネジメントコンソールで実際に確かめてみます。

Configのルール画面にて、組織内全アカウントに以下のように Configルールが適用されていました。 各ルール名には OrgConfigRule- プレフィクスがついています。

img

マスターアカウントでは アグリゲーターの設定をしているので、 [集約ビュー] > [ルール] から、組織内アカウントで作成されたルール一覧、結果が表示されています。

img

おわりに

実際に委任管理者のメンバーアカウントから Configルール/適合パックを組織全体に展開してみました。

GuardDuty(脅威検知サービス) でも同じように委任管理者を指定して、一括で管理できていましたが、 Configでも同じようなことができるようになりました。

マルチアカウントのセキュリティ統制に活用・検討したいところです。

少しでもどなたかのお役に立てば幸いです。

参考

▼ API, AWS CLI関連

▼ Configルール/適合パック関連