Resource Access Management (RAM) ポリシーの Condition および Deny メカニズムを使用して、セキュリティ標準とコンプライアンス要件を、クラウドプラットフォーム上で強制力のあるセキュリティベースラインに変換できます。このアプローチにより、安全でないクラウドリソースの作成と構成をソースで防ぐことができます。たとえば、ECS インスタンスへのパブリック IP アドレスの割り当てを禁止したり、ログインにキーペアの使用を強制したり、セキュリティグループが脆弱なポートを開くことを制限したりできます。これにより、デフォルトで安全なクラウド環境を構築できます。
セキュリティリスク
標準の RAM アクセスポリシーは通常、Allow モードを使用します。これは、ユーザーが実行できる操作を指定する権限を付与します。たとえば、ポリシーは ecs:RunInstances を使用して ECS インスタンスの作成を許可できます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow", #許可
"Resource": "acs:ecs:*:*:instance/*", #リソース範囲
"Action": [ #OpenAPI 操作
"ecs:RunInstances"
]
}
}このモードは単純ですが、権限の範囲内で過度の自由を与えることにより、隠れた脅威をもたらします。これにより、セキュリティ標準を満たさないリソースが作成される可能性があります。例:
攻撃対象領域の露出: 内部サービス専用のデータベースサーバーに、誤って Elastic IP アドレス (EIP) が割り当てられます。
脆弱な認証情報: ECS インスタンスの作成時にパスワードベースのログイン方法が使用されると、インスタンスはブルートフォース攻撃に対して脆弱になります。
コンプライアンス違反: セキュリティ強化が施された会社の標準イメージを使用せずにリソースが作成されます。
ベストプラクティス
コア原則
コア原則は、Allow ポリシーの上に条件付き Deny ポリシーのレイヤーを追加することです。
Deny が優先: RAM が操作リクエストを評価するとき、関連するすべてのポリシーをチェックします。Deny ポリシールールが一致した場合、Allow ポリシーも存在するかどうかに関係なく、操作は直ちに拒否されます。
正確な条件付き制約: Deny ポリシーには Condition ブロックを含めることができます。Deny 効果は、操作が指定された Action、Resource、および Condition に一致する場合にのみトリガーされます。
たとえば、ユーザーが任意のインスタンスリソース (acs:ecs:*:*:instance/*) のインスタンス (ecs:RunInstances) を作成するときに、パブリック IP アドレスがアタッチされている場合 ("ecs:AssociatePublicIpAddress": "true")、操作は拒否されます ("Effect": "Deny")。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny", #拒否
"Resource": "acs:ecs:*:*:instance/*", #リソース範囲
"Action": [ #OpenAPI 操作
"ecs:RunInstances"
],
"Condition": { #条件付きルール
"Bool": {
"ecs:AssociatePublicIpAddress": "true" #条件キーのアサーション
}
}
}
}この「Allow + Deny with Condition」の組み合わせは、まず操作に対して広範な Allow 権限を付与します。次に、セキュリティベースラインに準拠しない特定の操作を正確に拒否することで、セーフガードとして機能します。たとえば、「ECS インスタンスの作成を許可するが、パブリック IP アドレスをアタッチしようとした場合は操作を拒否する」などです。これにより、セキュリティポリシーは単なるガイドラインではなく、プラットフォーム上で強制力のあるルールになります。
手順
制約したいエンティティには、操作を許可する AliyunECSFullAccess などの Allow ポリシーと、作成した Deny ポリシーの 2 つのポリシーをアタッチする必要があります。ユーザーが操作を実行すると、Allow ポリシーが権限を付与し、Deny ポリシーはセキュリティ監査役として機能し、準拠していない試みを拒否します。次の手順では、RAM ポリシーに基づいてセキュリティベースラインを作成し、実装する方法を説明します。
制約する主要な操作と条件を特定する
まず、適用したいセキュリティルールを特定し、対応する RAM Action と条件キーを見つけます。条件キーは、Alibaba Cloud サービス API が評価のために RAM に提供するパラメーターです。これらのキーは、特定のサービスの API ドキュメントに記載されています。たとえば、ecs:RunInstances 操作の場合、サポートされているすべての条件キーは、RunInstances ドキュメントの「Authorization Information」セクションにあります。
条件付き Deny アクセスポリシーを作成する
Resource Access Management (RAM) コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[アクセスポリシー] ページで、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[スクリプトエディター] タブをクリックし、次のポリシードキュメントを入力して、[OK] をクリックします。
次の例は、一般的で検証済みのアクセスポリシーを示しています。
[ポリシー名] と [メモ] を入力し、[OK] をクリックして、セキュリティ認証を完了します。
アクセスポリシーをアタッチする
ポリシーを作成したら、制約したい RAM ユーザー、ユーザーグループ、またはロールにアタッチします。
RAM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、ターゲットの RAM ユーザーを見つけ、[操作] 列の [権限の追加] をクリックします。
[権限の追加] パネルで、アクセスポリシーを選択し、[OK] をクリックします。