本文の内容は、2022年4月6日現在における、Sysdig Cloud Native Learning Hub上のWhat Is Cloud Infrastructure Entitlements Management (CIEM)?(https://sysdig.com/learn-cloud-native/cloud-security/what-is-cloud-infrastructure-entitlements-management-ciem/) を元に日本語に翻訳・再構成した内容となっております。
最新のクラウド環境では、何千人もの人間のユーザー、アプリケーション、サービス、その他の資産が含まれ、それぞれが仕事をするために独自の許可とアクセス要件を持つことは珍しくありません。
このようなユーザーやマシンに割り当てられたアクセス権をどのように管理すればよいのでしょうか。特に、各ユーザーが必要なレベルのアクセス権限のみを持ち、セキュリティリスクにつながる過剰な権限を持たないようにするには、どうすればよいのでしょうか。
その答えが、Cloud Infrastructure and Entitlements Management(CIEM)です。クラウドインフラストラクチャーエンタイトルメント管理は、クラウド環境におけるアクセス権や権限(エンタイトルメントと呼ばれる)を管理するための体系的なアプローチです。
本ドキュメントでは、CIEMの仕組みと、最新のクラウドセキュリティの文脈でCIEMが重要である理由について説明していきます。
クラウドエンタイトルメントとは?
クラウド・インフラストラクチャー・エンタイトルメント・マネジメントを理解するためには、まずクラウド・エンタイトルメントを理解する必要があります。クラウドエンタイトルメントとは、クラウド環境において、特定の人間またはマシンユーザーに割り当てられるアクセス権限のことです。例えば、Amazonクラウドのクラウドエンタイトルメントは、以下のようなAWS Identity and Access Management (IAM) ポリシーによって定義され、AWSアカウントにS3ストレージバケットにオブジェクトを追加する能力を付与することができます。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddCannedAcl",
"Effect":"Allow",
"Principal": {"AWS": ["arn:aws:iam::111122223333:root","arn:aws:iam::444455556666:root"]},
"Action":["s3:PutObject"],
"Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Condition":{"StringEquals":{"s3:x-amz-acl":["public-read"]}}
}
]
}
2つ目の例として、Azure上のユーザーがカスタムロール定義を介して仮想マシンを起動・停止できるようにするJSONファイルを紹介します。
{3つ目の例は、このようなKubernetesのセキュリティコンテキストフィールドを介して特定のアクセス権や操作能力を割り当てられたコンテナです。
"Name": "Virtual Machine Operator",
"IsCustom": true,
"Description": "Can deallocate, start and restart virtual machines.",
"Actions": [
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/deallocate/action"
],
"NotActions": [
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo-2
spec:
securityContext:
runAsUser: 1000
containers:
- name: sec-ctx-demo-2
image: gcr.io/google-samples/node-hello:1.0
securityContext:
runAsUser: 2000
allowPrivilegeEscalation: false
これらの例のすべてにおいて、ポリシーファイルは、クラウド環境内の人間またはマシン・ユーザーに特定の権利または許可を割り当てています。
クラウドエンタイトルメント vs. パーミッション vs. プリビレッジ
CIEMの文脈で、なぜ「許可」や「特権」ではなく「エンタイトルメント」という言葉を使うのか、不思議に思われるかもしれません。後者の用語は従来、クラウド環境内でリソースが実行できるアクションを指すのに使われてきたことを考えると、それは正しい質問です。近年、「クラウド・エンタイトルメント」という言葉が「パーミッション」や「プリビレッジ」といった言葉に代わるものとして流行しているのは、「エンタイトルメント」が機械と人間の両方のユーザーに対して可能にするあらゆるタイプの操作を包含しているからです。
つまり、旧来の用語は制限が多く、特定のドメイン内や特定のアクセス制御システムのみに適用されると解釈される可能性があります。これに対して、クラウドエンタイトルメントとは、クラウド環境であらゆるタイプのシステムを使用して割り当てることができる、事実上あらゆるタイプの許可や特権を指します。
CIEMが目指すのはクラウドインフラのエンタイトルメントだけではない
また、「Cloud Infrastructure Entitlements Management」という言葉がありますが、CIEMはクラウドインフラに関連するエンタイトルメントだけに適用されるわけではありません。アプリケーション、サービス、その他クラウド上で動作するあらゆる種類のエンティティは、エンタイトルメントによって管理することが可能です。CIEMの用語は、この観点からすると少し誤解を招くかもしれませんが、この用語は定着しています。
クラウドにおけるアイデンティティ権限の管理
上記のクラウドエンタイトルメントの例では、コードと、異なるクラウド(または3番目の例の場合はKubernetes)に組み込まれたIDおよびアクセス管理ツールを使用してエンタイトルメントを定義しています。コードはエンタイトルメントを管理する1つの方法です。しかし、どのユーザーが何をできるかを定義できるクラウドコンソールや他の管理インターフェイスを通じて管理することもできます。
権限を定義するためのツールを提供することに加えて、ほとんどのクラウド(およびKubernetesのようなクラウドで実行できるプラットフォーム)は、どの権限がどこに割り当てられているかを追跡するのを助けるツールを含んでいます。いくつかのツールは、設定したセキュリティポリシー(または特定のコンプライアンスフレームワークに関連するもの)に違反するエンタイトルメント設定を警告するために設計された監査機能も提供します。
クラウドベンダーが提供するこれらのツールは、ある程度は有用ですが、主に2つの制約を受けます。
- 通常、クラウドベンダーのIAMフレームワークを使用して、エンタイトルメントを追跡します。その結果、特定のパブリッククラウドプラットフォームにネイティブではない、Kubernetesセキュリティコンテキストのような他のツールまたはフレームワークを使用して割り当てられたエンタイトルメントを見逃す可能性があります。
- 通常、単一のクラウドプラットフォーム内でのみ動作します。複数のクラウドを使用している場合、別々のツールを使用してエンタイトルメントを追跡する必要があり、負担が大きく、エンタイトルメントの問題を見過ごすリスクが高くなります。
最新のクラウドセキュリティにおけるCIEMの役割
クラウド・セキュリティに詳しい方なら、セキュリティ上の問題を特定するために権限設定を体系的に検証するという考え方が、何も新しいものではないことをご存じでしょう。これは、クラウド・セキュリティ・ポスチャー・マネジメント(CSPM)ツールが何年も前から扱っているタスクです。CSPMツールは、最新のクラウドセキュリティ戦略の一環として広く導入されており、一般にアクセス可能なオブジェクトストレージのバケットデータなど、侵入を招く可能性のある誤った設定をチェックするために使用されています。しかし、クラウド環境の複雑化に伴い、CSPMだけではクラウドのセキュリティ・リスクを完全に可視化することができない場合が多くなっています。CSPMツールは、主に安全でないことが分かっている設定をチェックするように設計されており、各ユーザーに付与された権限を評価し、そのユーザーが持つべき必要なレベルを超えているかどうかを判断するのとは対照的です。
CIEMは、いくつかの方法でCSPMのギャップを埋めることができます。
きめ細かいエンタイトルメント評価
CIEMツールは、ユーザーごとに粒度の細かいエンタイトルメントを検証することで、単に設定の問題を見つけるだけでなく、より高度な効果を発揮します。CIEMは、最小特権の原則に違反するかどうかをプロアクティブに判断することができます。継続的なアセスメント
CIEMツールが継続的にエンタイトルメントを検証するということは、エンタイトルメントポリシーが変更されても、リアルタイムで過剰なエンタイトルメント構成を検出することができるということです。例えば、CIEMツールは、過去に仮想マシンしか実行できなかったクラウドアカウントが、仮想マシンの削除もできるようになったことにフラグを立てるかもしれません。これは正当な変更である可能性もありますが、不必要なエンタイトルメントの例である可能性もあり、ロールバックされる必要があります。
自動的な修復
CIEMツールの中には、特にポリシーの変更が容易な場合、自動的にエンタイトルメントポリシーを変更してリスクに対応できるものがあります。しかし、その他の状況では、人間の管理者が手動でエンタイトルメントの問題に対処する必要があります。大規模なスケール
CIEMは、何十万ものエンタイトルメントを管理する場合でも、エンタイトルメント管理の自動化を可能にします。例えば、何十ものアカウントと、それぞれで動作する何百ものアプリケーション、サービス、インフラリソースを含む最新のクラウド環境では、管理するエンタイトルメントが何十万にもなります。マルチクラウド対応
これまで見てきたように、クラウド権限の定義と管理方法は、使用するクラウドとその中で実行するサービスによって大きく異なります。各パブリッククラウドには、それぞれ固有のIAMフレームワークがあります。これに加えて、Kubernetesのような他のプラットフォームやサービスをクラウドで実行すると、エンタイトルメントを定義するために別のフレームワークを使用する場合があります。CIEMの利点は、複雑なマルチクラウド環境内のすべてのサービスとプラットフォームにわたって、自動化されたエンタイトルメント管理を可能にすることです。複数のツールを使いこなす必要も、エンタイトルメントを追跡するためにさまざまなアクセス制御フレームワークの裏技を学ぶ必要もありません。CIEMツールは、エンタイトルメントの設定を自動的に評価し、何か問題がある場合は警告を発します。
CIEMは必要ですか?
すべてのビジネスやクラウド環境にCIEMが必要なわけではありません。比較的シンプルなクラウド環境(1つのクラウドプラットフォーム、1つのクラウドアカウント、および少数のクラウドサービスを含む)の場合は、CSPM とクラウド権限構成の手動分析を使用するだけでも十分な可能性があります。しかし、複数のクラウドや複数のアクセス制御フレームワークを使用している場合、CIEMはエンタイトルメントを追跡し、それらすべてにわたって過剰なエンタイトルメントの問題を特定するために不可欠です。実際、1つのクラウドプラットフォームと1つのアクセス制御フレームワークを使用していても、数百または数千のエンタイトルメントが設定されている場合、各エンタイトルメントが適切に定義されていることを確認するための効率的で自動化された手段としてCIEMの恩恵を受けることができます。