条件キーを含むカスタム RAM ポリシーをアタッチして、RAM ユーザーによるリスクの高いセキュリティグループ ルールの作成や、デフォルト セキュリティグループの使用を制限します。
背景情報
セキュリティグループは、クラウドにおける主要な防御層および分離境界です。ルールの設定を誤ると、機密性の高いポート (22、3389、80、8080、443) を開いたり、0.0.0.0/0 を承認オブジェクトとして使用したりすることで、関連付けられたリソース (ECS インスタンスや ApsaraDB RDS インスタンスなど) が攻撃にさらされます。
RAM ユーザー全体で一貫したセキュリティ ベースラインを適用するには、リスクの高いセキュリティグループ ルールの作成または参照を禁止する RAM ポリシーを設定します。
RAM カスタムポリシーは、リソース、オペレーション、および条件を正確に記述します。条件キーを使用して、リスクの高いルールを拒否したり、承認されたルールのみを許可したりします。詳細については、「ポリシー要素」の条件セクションをご参照ください。
仕組み
RAM 条件キーは、2 つの方法でリスクの高いセキュリティグループ ルールを制限します:
-
特定の IP アドレスまたはプロトコルを含むセキュリティグループ ルールを拒否し、承認されたルールのみを許可します。
-
ECS インスタンスの作成時にデフォルト セキュリティグループが使用されるのを禁止します。
デフォルト セキュリティグループには、機密性の高いルールが含まれています。詳細については、「デフォルト セキュリティグループ」をご参照ください。
次の表に、利用可能な RAM 条件キーを一覧表示します。
|
条件キー |
データ型 |
説明 |
|
ecs:SecurityGroupIpProtocols |
文字列 |
TCP や ICMP などのトランスポート層プロトコル。 |
|
ecs:SecurityGroupSourceCidrIps |
文字列 |
ソース IPv4 CIDR ブロックまたは IPv4 アドレス。 |
|
ecs:NotSpecifySecurityGroupId |
ブール値 |
セキュリティグループ ID が指定されているかどうか。 |
-
条件キーが配列の場合、セキュリティグループ ルールが配列内のいずれかの値と一致すると、条件が満たされます。
-
同じ条件で 2 つの条件キーが指定されている場合、セキュリティグループ ルールが両方の条件キーに一致すると、条件が満たされます。
操作手順
-
RAM 条件キーを使用してカスタムポリシーを作成します。詳細については、「カスタムポリシーの作成」をご参照ください。
このセクションと「結果の検証」セクションでは、「例 2:承認オブジェクトとして 0.0.0.0/0 を含むセキュリティグループ ルールの作成を RAM ユーザーに禁止するカスタムポリシー」のカスタムポリシーを例として使用します。
説明カスタムポリシーの例については、「カスタムポリシーの例」セクションをご参照ください。
-
カスタムポリシーを RAM ユーザーにアタッチします。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
結果の検証
-
RAM ユーザーとして ECS コンソールにログインします。
-
カスタムポリシーが有効になっていることを確認します:
-
ターゲット リージョンにカスタム セキュリティグループが存在しないことを確認してから、デフォルト セキュリティグループを使用して ECS インスタンスを作成します。詳細については、「「カスタム起動」タブでのインスタンス作成」をご参照ください。
説明選択したリージョンにカスタム セキュリティグループが存在しない場合、デフォルト セキュリティグループが自動的に作成されます。
ECS インスタンスの購入ページで次のエラーが表示された場合、RAM ユーザーはデフォルト セキュリティグループの使用を禁止されています。

-
セキュリティグループを選択し、[承認オブジェクト] (ソース) を
0.0.0.0/0に設定してルールを作成します。詳細については、「セキュリティグループ ルールの追加」をご参照ください。ルールの作成に失敗し、次のエラーが表示された場合、RAM ユーザーは[承認オブジェクト] を
0.0.0.0/0に設定したルールの作成を禁止されています。
-
カスタムポリシーの例
例 1:RAM ユーザーに特定の承認オブジェクトを含むセキュリティグループ ルールの作成のみを許可するカスタムポリシー
-
RAM ユーザーが、[承認オブジェクト] (ソース) として
140.205.XX.XX/27または140.205.XX.XX/28を持つセキュリティグループ ルールのみを作成できるようにし、ECS インスタンスの作成時にデフォルト セキュリティグループの使用を禁止するカスタムポリシー:説明要件に応じて、
XXを実際の値に置き換えてください。{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "ecs:SecurityGroupSourceCidrIps": [ "140.205.XX.XX/27", "140.205.XX.XX/28" ] } } }, { "Effect": "Deny", "Action": [ "ecs:CreateInstance", "ecs:RunInstances" ], "Resource": "*", "Condition": { "Bool": { "ecs:NotSpecifySecurityGroupId": [ "true" ] } } } ] } -
RAM ユーザーに、[承認オブジェクト] (ソース) が
140.205.XX.XX/27であるTCPのセキュリティグループルールのみの作成を許可し、ECS インスタンスの作成時にデフォルトセキュリティグループの使用を禁止するカスタムポリシー:[]説明要件に応じて、
XXを実際の値に置き換えてください。{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "ecs:SecurityGroupSourceCidrIps": [ "140.205.XX.XX/27" ] } } }, { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "ecs:SecurityGroupIpProtocols": [ "TCP" ] } } }, { "Effect": "Deny", "Action": [ "ecs:CreateInstance", "ecs:RunInstances" ], "Resource": "*", "Condition": { "Bool": { "ecs:NotSpecifySecurityGroupId": [ "true" ] } } } ] }
例 2:承認オブジェクトとして 0.0.0.0/0 を含むセキュリティグループ ルールの作成を RAM ユーザーに禁止するカスタムポリシー
RAM ユーザーが、[承認オブジェクト] (ソース) として 0.0.0.0/0 を持つセキュリティグループ ルールの作成を禁止し、ECS インスタンスの作成時にデフォルト セキュリティグループの使用を禁止するカスタムポリシー:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ecs:AuthorizeSecurityGroup",
"ecs:ConfigureSecurityGroupPermissions",
"ecs:ModifySecurityGroupRule"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"ecs:SecurityGroupSourceCidrIps": [
"0.0.0.0/0"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"ecs:CreateInstance",
"ecs:RunInstances"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:NotSpecifySecurityGroupId": [
"true"
]
}
}
}
]
}
関連ドキュメント
-
RAM ポリシーを作成または更新する前に、その構文、構造、評価プロセスを理解しておく必要があります。詳細については、「ポリシーの構造と構文」および「ポリシーの評価プロセス」をご参照ください。
-
RAM ポリシーの例については、「ポリシーの例」をご参照ください。