承認済みイメージにタグを付け、タグのないイメージからのインスタンス起動をブロックする RAM ポリシーを適用します。
セキュリティリスク
| リスク | 説明 |
|---|---|
| 悪意のあるイメージ | 出所不明のパブリックイメージには、マルウェア、マイニングプログラム、バックドアが含まれている可能性があり、攻撃者に Elastic Compute Service (ECS) インスタンスが制御されるおそれがあります。 |
| 脆弱性のあるイメージ | メンテナンスされていない社内イメージは、攻撃の侵入経路となる可能性があります。古いイメージやパッチ未適用のイメージには、Log4j や Heartbleed などの脆弱性が含まれている可能性があります。 |
| 不適切に構成されたイメージ | 不要なポートの開放や脆弱なパスワードなど、安全でないデフォルト設定を含むイメージは、そのイメージから起動されるすべてのインスタンスにそれらのリスクをもたらします。 |
ゴールデンイメージの作成とタグ付け
ハードニング済みで定期的に更新されるベースラインイメージを作成し、承認済みとしてタグを付けます。例:
-
status: approved -
security-level: trusted -
environment: production
承認済みイメージにタグを付けた後は、タグを保護してください。ユーザーがタグを変更できないように、ECS イメージリソースに対して ecs:DeleteTags、ecs:UntagResources、ecs:CreateTags、ecs:TagResources を拒否してください。以下の RAM ポリシーの例 には、この Deny ステートメントが含まれています。
承認済みタグが付いたイメージの検索
インスタンスを作成する前に、承認済みイメージの ImageId を確認します。
コンソール
ECS コンソールのイメージ一覧で、承認済みタグでフィルタリングし、条件に一致するイメージからインスタンスを作成します。
API
-
承認済みタグを
Tag.KeyとTag.Valueに設定して DescribeImages API を呼び出し、条件に一致するイメージ ID を取得します。 -
返された
ImageIdを RunInstances API または CreateInstance API に渡して、インスタンスを作成します。
RAM ポリシーの強制
RAM ポリシーを使用して、イメージに必須のタグがない場合にインスタンスの作成またはシステムディスクの交換をブロックします。次のポリシーは 2 つのルールを適用します:
-
Allow ステートメント: イメージに
acs:ResourceTag/environment: productionタグが付いている場合にのみ、ecs:CreateInstance、ecs:RunInstances、ecs:ReplaceSystemDiskを許可します。 -
Deny ステートメント: タグによる回避を防ぐため、ECS イメージリソースに対するすべてのタグ操作 (
ecs:DeleteTags、ecs:UntagResources、ecs:CreateTags、ecs:TagResources) をブロックします。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:CreateInstance",
"ecs:RunInstances",
"ecs:ReplaceSystemDisk"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/environment": "production"
}
}
},
{
"Effect": "Deny",
"Action": [
"ecs:DeleteTags",
"ecs:UntagResources",
"ecs:CreateTags",
"ecs:TagResources"
],
"Resource": "acs:ecs:*:*:image/*"
}
]
}
エンタープライズユーザーの場合
-
Resource Directory コンソールにログオンします。左側メニューで [コントロールポリシー] をクリックし、次に [カスタムポリシーを作成] をクリックして、上記の JSON を使用します。
-
Resource Directory で対象ノードを選択し、ポリシーをアタッチします。このポリシーは、当該ノード配下のすべてのアカウントに対して有効になります。
非エンタープライズユーザーの場合
-
RAM コンソールにログオンします。左側メニューで [Policies] をクリックし、同じ JSON でカスタムポリシーを作成します。
-
ポリシーを RAM ユーザー、RAM ユーザーグループ、または RAM ロールにアタッチします。詳細については、「Manage policy-based authorization」をご参照ください。
非準拠インスタンスの修復
ポリシーが有効になる前にインスタンスが起動されていた場合は、コンプライアンスに準拠した状態にしてください。
-
イメージがまだ存在し、かつ管理できる場合:必須のタグを追加してください。
-
イメージが削除されている場合、またはタグ付けできない外部ソースのイメージである場合:影響を受けるインスタンスを置き換えるか、終了してください。