[アップデート] AWS Config で AWS コンテナサービスの構成変更管理が可能になりました

ECS/EKS ユーザー待望のアップデート
2021.02.27

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

本日のアップデートで AWS Config で AWS コンテナサービスの構成変更の管理が可能になりました!

ECS/EKS ユーザー待望のアップデートが来ましたね!

AWS Config の AWS Container Service サポート

AWS Config は セキュリティ、ガバナンスのために利用されるフルマネージドサービスです。AWS Config では AWS リソースのインベントリ、構成履歴、構成変更通知の機能を備えています。

これらの機能により意図しない変更を検知したり、特定時点における AWS リソースの構成状態を追跡することが可能となります。

また、AWS Config ルールを利用することで特定の条件を満たしていないリソースを「非準拠」として検出し、自動的にリカバリーするといった運用も可能です。

追加サポートされる AWS リソース

これまで ECS などのコンテナサービスは AWS Config で管理することができませんしたが、今回のアップデートで以下の AWS リソースが追加サポートされました。

Amazon Elastic Container Registry (ECR)

  • AWS::ECR::Repository

Amazon Elastic Container Service (ECS)

  • AWS::ECS::Cluster
  • AWS::ECS::TaskDefinition
  • AWS::ECS::Service*
  • AWS::ECS::TaskSet

Amazon Elastic Kubernetes Service (EKS)

  • AWS::EKS::Cluster

注意点

AWS Container Service は 2019年2月に新しい形式の ARN をリリースしています。執筆時点で AWS Config がサポートするのは新しい形式の ARN のみです。

新しい形式の ARN を利用されている場合、以下のように ARN の一部に cluster-name が含まれています。

  • コンテナインスタンス
    • 旧: arn:aws:ecs:region:aws_account_id:container-instance/container-instance-id
    • 新: arn:aws:ecs:region:aws_account_id:container-instance/cluster-name/container-instance-id
  • Amazon ECS サービス
    • 旧: arn:aws:ecs:region:aws_account_id:service/service-name
    • 新: arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
  • Amazon ECS タスク
    • 旧: arn:aws:ecs:region:aws_account_id:task/task-id
    • 新: arn:aws:ecs:region:aws_account_id:task/cluster-name/task-id

AWS アカウントの作成時にによって利用する ARN のデフォルト設定が異なりますので、各自の環境をご確認ください。

既存の設定は ECS 管理コンソールの [Amazon ECS] - [Account Settings] から確認、および変更が可能です。

ただし、設定値を変更しても既存のリソースの ARN が変わることはありませんので、既存リソースを AWS Config 管理に含めたい場合は、ARN 設定を変更後にリソース再作成が必要となりますのでご注意ください。(旧形式もサポートしてほしいですね、、、)

AWS Config ルール

AWS Config ルールが提供されているのか確認してみたところ、執筆時点においては EKS 用に以下のルールが提供されていました。ECS、ECR 用のルールはまだ提供されていないようですね。

上記のとおり AWS マネージドなルールはまだ多く提供されていませんが、カスタムルールを作成して管理することは可能と思われますので、我こそは!と思う方はチャレンジしてブログ等で発信していただけると泣いて喜びます。

やってみる

それでは簡単にですが AWS Config の設定を確認してみます。

AWS Config 管理コンソールをから [設定] - [編集] を開きます。[一般設定] - [リソースタイプ] から以下のリソースを見つけることができますので、これを追加して保存します。

ECS タスクのリビジョンを変更してみる

試しに ECS サービスで必要なタスクを 1 → 2 に変更してみました。

問題なく AWS コンテナサービスの変更を検出できていますね!

旧形式の ARN は管理されない

このクラスターには 2 つのサービスを登録していますが、cm-service は既存の AWS リソースであるため旧形式の ARN になっています。

そのため、AWS Config では新形式の ARN のみが検出されており、旧形式は管理されていないことがわかります。

$ aws configservice list-discovered-resources --resource-type AWS::ECS::Service
resourceIdentifiers:
- resourceId: arn:aws:ecs:ap-northeast-1:XXXXXXXXXXXX:service/cm-cluster/test-service
  resourceName: test-service
  resourceType: AWS::ECS::Service

簡単ではありますが、検証は以上です!

さいごに

「ECS の構成管理を AWS Config でやりたいんだけど、、」というご相談を受けることが多かったのですが、その都度、「AWS Config は ECS サポートしてないんですよね。。」という回答を幾度としてきましたが、それも今日までですね!(旧形式の ARN がサポートされない点は要注意ですが)

ECS/EKS ユーザー待望の AWS Config アップデートだと思います。まだ AWS Config ルールなどの対応は少ないようですが、今後、AWS Config ルールが追加されるようになれば、Security Hub で AWS コンテナサービスまわりのガバナンスを管理することも期待できそうですね!

以上!大阪オフィスの丸毛(@marumo1981)でした!