[アップデート]AWS OrganizationsにAmazon Inspectorのスキャン設定が柔軟に管理できる「Inspectorポリシー」が登場しました
あしざわです。
AWS OrganizationsでInspectorポリシーが利用可能になり、組織全体でAmazon Inspectorの設定をより柔軟に管理できるようになりました。
それでは詳しく見ていきましょう。
概要
Amazon InspectorはEC2、ECR、Lambdaをスキャンし、ソフトウェアの脆弱性やネットワーク露出がないかチェックするサービスです。
これまでのInspectorでは、AWS Organizationsと連携して以下の機能が利用できました。
- 委任管理者の指定
- メンバーアカウントのサービスの有効化
- メンバーアカウントのスキャン設定の管理
- 検出結果の統合

従来:InspectorのOrganizations連携の概要図
従来の方式でもマルチアカウント環境でInspectorスキャンを統合管理できていましたが、以下の課題がありました。
- アカウント単位で設定するため、スキャン設定自体の管理が煩雑になる
- リージョン単位で設定が必要
Inspectorポリシーの登場により、以下の機能が新しく利用可能になりました。
- OU単位でのスキャン設定の適用
- リージョンを跨いだ設定の一元管理

新機能:Inspectorポリシーの概要図
Inspectorポリシーを利用することで、これまでAWSアカウント単位で対応していたスキャン設定を、OUというグループ単位で割り当てられるようになります。
つまり、組織に新規アカウントが追加されたり規模が拡大しても運用のオーバーヘッドを抑えた状態でInspectorスキャンのベースラインを確保できるようになります。
ポリシーの構造
Inspectorポリシーの基本構造はこちら
{
"inspector": {
"enablement": {
"[scan_type]": {
"[regions]": {
"[Inheritance operators]": ["RegionName1", "RegionName2"..., "RegionNameN"]
}
}
}
}
ポリシーには以下のコンポーネントが含まれます。
- inspector (必須)
- ポリシードキュメントの最上位キー
- enablement (必須)
- Inspectorを有効化する方法を定義
- [scan_type] (任意)
- Inspectorのスキャンタイプ、現状は5種類ある
ec2_scanning:EC2スキャンecr_scanning:ECRスキャンlambda_standard_scanning:Lambda標準スキャンlambda_code_scanning:Lambdaコードスキャン- (このスキャンタイプだけ、lambda_standard_scanningの子要素として追加する必要あり)
code_repository_scanning:コードリポジトリスキャン
- Inspectorのスキャンタイプ、現状は5種類ある
- enable_in_regions (scan_typeごとに必須)
- 有効化するリージョンを設定します
- disable_in_regions (scan_typeごとに必須)
- 無効化するリージョンを設定します
- [Inheritance operators(継承演算子)] (必須)
- Key:基本的には以下のいずれかを使用
@@assign:上書き@@append:追加@@remove:削除
- Value:有効化するリージョンを指定(例: "us-east-1", "ap-northeast-1")
ALL_SUPPORTEDを指定すると全リージョン指定 + 今後追加される新しいリージョンが自動追加されます
- 詳細は公式ドキュメント 継承演算子 へ
- Key:基本的には以下のいずれかを使用
参考までに、ポリシーの例は以下のとおりです。
{
"inspector": {
"enablement": {
"ec2_scanning": {
"enable_in_regions": {
"@@assign": ["us-east-1", "us-west-2"]
},
"disable_in_regions": {
"@@assign": ["eu-west-1"]
}
}
}
}
}
やってみた
Inspectorポリシーの利用方法はこちらのドキュメントに記載されています。
この方法を参考に作成した、検証のシナリオがこちらです
- Inspector委任管理者の設定
- Inspectorポリシーの設定
- OUへポリシーアタッチ
- 新規AWSアカウント追加
はじめにInspectorの委任管理者アカウントの設定を行います。検証環境では委任管理者設定ができていなかったのでやってますが、実施済みの場合は飛ばしてください。
続いて、委任管理者アカウントからInspectorポリシーを作成します。そして、指定のOUへ作成したポリシーをアタッチします。
最後に、ポリシーがアタッチされているOU配下で新しいAWSアカウントを発行し、自動的にInspectorポリシーが適用されることを確認します。
こちらが検証の最終形を図解したものが以下です。

それでは検証を進めていきます。
なお、検証環境にはControl Towerが有効化されたOrganizations組織を利用します。マネジメントコンソールの操作はすべてAdministrator権限が付与されたIAMで実施します。
Inspector管理者権限の委任
まずはここの部分から進めていきます。

マネジメントコンソールからOrganizations 管理アカウントにサインインします。
Inspectorのサービス画面で設定を進めます。

管理者の設定画面に遷移しました。
以下を入力して設定します。
- 委任された管理者アカウント ID:
AuditアカウントのAWSアカウントID - Delegation policy(委任ポリシー):
Update delegation policy for me - チェックボックス:チェックする

この設定による委任ポリシーの差分は以下のようです
- 既存のポリシードキュメントへの
arn:aws:organizations::222222222222:policy/o-abcdefghij/inspector_policy/*の追記 SecurityServicesDelegatingPolicyTagActionsステートメントの追加
自動作成された委任ポリシーのサンプル:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecurityServicesDelegatingOrgReadActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "organizations:ListRoots",
"Resource": "*"
},
{
"Sid": "SecurityServicesDelegatingNecessaryOrgManagementActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": [
"organizations:DescribeOrganization",
"organizations:DescribeOrganizationalUnit",
"organizations:DescribeAccount",
"organizations:ListRoots",
"organizations:ListOrganizationalUnitsForParent",
"organizations:ListParents",
"organizations:ListChildren",
"organizations:ListAccounts",
"organizations:ListAccountsForParent",
"organizations:ListTagsForResource",
"organizations:ListDelegatedAdministrators",
"organizations:ListHandshakesForAccount"
],
"Resource": [
"arn:aws:organizations::222222222222:root/o-abcdefghij/*",
"arn:aws:organizations::222222222222:organization/o-abcdefghij",
"arn:aws:organizations::222222222222:ou/o-abcdefghij/*",
"arn:aws:organizations::222222222222:account/o-abcdefghij/*",
"arn:aws:organizations::222222222222:policy/o-abcdefghij/inspector_policy/*"
]
},
{
"Sid": "SecurityServicesDelegatingPolicyDescribeActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": [
"organizations:DescribePolicy",
"organizations:DescribeEffectivePolicy",
"organizations:ListPolicies",
"organizations:ListPoliciesForTarget",
"organizations:ListTargetsForPolicy"
],
"Resource": [
"arn:aws:organizations::222222222222:root/o-abcdefghij/*",
"arn:aws:organizations::222222222222:ou/o-abcdefghij/*",
"arn:aws:organizations::222222222222:account/o-abcdefghij/*",
"arn:aws:organizations::222222222222:policy/o-abcdefghij/inspector_policy/*"
]
},
{
"Sid": "SecurityServicesDelegatingPolicyMutationActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": [
"organizations:CreatePolicy",
"organizations:UpdatePolicy",
"organizations:DeletePolicy",
"organizations:AttachPolicy",
"organizations:DetachPolicy",
"organizations:EnablePolicyType",
"organizations:DisablePolicyType"
],
"Resource": [
"arn:aws:organizations::222222222222:root/o-abcdefghij/*",
"arn:aws:organizations::222222222222:ou/o-abcdefghij/*",
"arn:aws:organizations::222222222222:account/o-abcdefghij/*",
"arn:aws:organizations::222222222222:policy/o-abcdefghij/inspector_policy/*"
]
},
{
"Sid": "SecurityServicesDelegatingPolicyTagActions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": [
"organizations:TagResource",
"organizations:UntagResource"
],
"Resource": [
"arn:aws:organizations::222222222222:policy/o-abcdefghij/inspector_policy/*"
]
}
]
}
委任管理者の設定が完了しました。
(その後、右下のActivate this accountから管理アカウントのInspectorを有効化しておきました)

Inspectorポリシーの設定
続いて、こちらを進めます。

操作するアカウントを委任管理者に設定したAuditアカウントに切り替えます。
Organizationsのサービス画面に移動します。
ポリシータブにInspectorポリシーという項目が追加されています。

Inspectorポリシーを有効化します。

設定できました。デフォルトでは何も設定されていません。

ポリシーを作成から、ポリシー名、ポリシードキュメントを入力します。
今回は以下2つのポリシーを作成しました。
- ポリシー名:
inspector-policy-for-workload - ポリシードキュメント:
{
"inspector": {
"enablement": {
"ec2_scanning": {
"enable_in_regions": {
"@@assign": ["ap-northeast-1", "ap-northeast-3"]
},
"disable_in_regions": {
"@@assign": []
}
},
"ecr_scanning": {
"enable_in_regions": {
"@@assign": ["ap-northeast-1", "ap-northeast-3"]
},
"disable_in_regions": {
"@@assign": []
}
},
"lambda_standard_scanning": {
"enable_in_regions": {
"@@assign": ["ap-northeast-1"]
},
"disable_in_regions": {
"@@assign": []
},
"lambda_code_scanning": {
"enable_in_regions": {
"@@assign": ["ap-northeast-1"]
},
"disable_in_regions": {
"@@assign": []
}
}
}
}
}
}
- ポリシー名:
inspector-policy-for-sandbox - ポリシードキュメント:
{
"inspector": {
"enablement": {
"ec2_scanning": {
"enable_in_regions": {
"@@assign": ["ap-northeast-1"]
},
}
}
}
}
ポリシーが作成できました。

ポリシーのOUへのアタッチ
そしてこちらです。

ポリシーで定義したInspectorの設定をAWSアカウントに反映するため、ポリシーをOUにアタッチします。
今回は以下のようにポリシーをアタッチします。
inspector-policy-for-sandbox:Sandbox OUにアタッチinspector-policy-for-workload:Workload OUにアタッチ
アクション > ポリシーのアタッチから作成したポリシーをOUに関連づけていきます。

Workload OUを選択し、ポリシーをアタッチします。

設定できました。

同様にSandbox OUにもポリシーをアタッチします。

ここで各アカウントのInspector設定状態を確認しましょう。
Inspectorポリシーによる設定状況は、委任管理者アカウントのアカウント管理タブから確認できます。

東京リージョンで確認できた結果はこちら。
- sample-a(Sandbox OU):EC2、ECR、Lambdaスキャン(標準+コード)が有効化されている
- sample-b(Workload OU):EC2スキャンのみ有効化されている

大阪リージョンでも確認してみようとしたところ、このような画面になりました。Inspectorの状態を閲覧するアカウントでInspectorが有効化されていないと見られないようです。Activate this accountからInspectorを有効化しましょう。

大阪リージョンで確認できた結果はこちら。
- sample-b(Workload OU):EC2、ECRスキャンが有効化されている

ここまで想定通りです。
新規AWSアカウント追加
最後にAWSアカウント追加するとどうなるのか確かめてみましょう。
構成図は最終形のこちらです。

AWSアカウントの作成はOrganizationsで実施しており、Control Towerのアカウントファクトリー機能は使用していません。
チェックはOrganizationsコンソールからAWSアカウントを追加してから10分後を目処に確認しました。AWSアカウント作成直後に確認したところ、まだステータスがDisassociateのままであることが確認できたためです。
東京リージョンで確認できた差分を青枠で示しています。
- sample-c (Workload OU):EC2、ECR、Lambdaスキャン(標準+コード)が有効化されている

大阪リージョン確認できた差分を青枠で示しています。
- sample-c (Workload OU):EC2、ECRスキャンが有効化されている

想定通りの設定になっていることが確認できました。
最後に
本ブログでは、AWS Organizationsに追加されたInspectorポリシーの解説・検証を行いました。
この度初めてOrganizationsポリシーを触ったのですが、SCPと違って少しクセがあリました。一度触れておくと今後のアップデートに追従しやすくなるのではと思います。
また、他のOrganizationsポリシーである「アップグレードロールアウトポリシー」も直近で追加されています。
頻繁に追加されるOrganizationsポリシーは、今後のOrganizationsガバナンス機能の中心として存在感を示していきそうです。
新しいポリシーを検証してどんどん組み込み、組織のガバナンスを強化していきましょう。
以上です。






