RAM ポリシーに Deny 要素を含む condition ステートメントを追加して、パブリック IP の割り当て、パスワードベースのログオン、ハイリスクポートの公開など、安全でない ECS 操作をブロックします。
許可のみのポリシーがもたらすセキュリティリスク
標準 RAM ポリシーステートメントは、Allow エフェクトを使用して権限を付与します。たとえば、次のポリシーでは、ユーザーは ecs:RunInstances アクションを使用して ECS インスタンスを作成できます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Resource": "acs:ecs:*:*:instance/*",
"Action": [
"ecs:RunInstances"
]
}
}
このアプローチは広範な権限を付与するため、非準拠のリソースが作成される可能性があります。例:
-
攻撃対象領域の公開:内部使用を目的としたデータベースサーバーに、Elastic IP Address (EIP) が割り当てられます。
-
脆弱な認証情報:パスワードベースのログインを使用する ECS インスタンスは、ブルートフォース攻撃に対して脆弱です。
-
コンプライアンス違反:企業によって承認された強化イメージを使用せずにリソースが作成されます。
ベストプラクティス
基本原則
Allow ポリシーに condition 付きの Deny ステートメントを追加します:
-
Deny の優先:RAM は、適用可能なすべてのポリシーをチェックします。 いずれかのステートメントが
Denyと評価された場合、他のステートメントがAllowと評価されたとしても、リクエストは拒否されます。 -
条件による正確な制約:
Denyステートメントにはconditionブロックを含めることができます。このDenyは、リクエストがポリシーのAction、Resource、およびconditionに一致する場合にのみ有効になります。
たとえば、次のポリシーは、パブリック IP アドレスが関連付けられている場合 ("ecs:AssociatePublicIpAddress": "true")、任意のインスタンスリソース (acs:ecs:*:*:instance/*) に対する ecs:RunInstances を拒否 ("Effect": "Deny") します。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Resource": "acs:ecs:*:*:instance/*",
"Action": [
"ecs:RunInstances"
],
"Condition": {
"Bool": {
"ecs:AssociatePublicIpAddress": "true"
}
}
}
]
}
この 「Allow + Deny with Condition」 戦略では、広範な権限を付与する一方で、セキュリティベースラインに違反するアクションをブロックするガードレールとして、条件付きの Deny を追加します。これにより、セキュリティガイドラインはプラットフォームで強制されるルールになります。
操作手順
対象のプリンシパル (RAM ユーザー、ユーザーグループ、またはロール) には、Allow ポリシー (AliyunECSFullAccess など) とカスタム Deny ポリシーの 2 つのポリシーをアタッチします。Allow ポリシーは権限を付与し、Deny ポリシーは非準拠のリクエストを拒否します。
-
制約する操作と条件の特定
適用するセキュリティルールを特定し、対応する RAM アクションと条件キーを見つけます。 条件キーは、クラウドサービス API が評価のために RAM に公開するパラメーターです。 たとえば、
ecs:RunInstancesでサポートされているすべての条件キーについては、RunInstances の「承認情報」セクションをご参照ください。 -
条件付き拒否ポリシーの作成
-
RAM コンソールにログインします。左側メニューで、 を選択します。
-
「ポリシー」ページで、Create Policy をクリックします。
-
Create Policy ページで、JSON タブをクリックします。ポリシードキュメントを入力し、はい をクリックします。
以下の例は、一般的な拒否ポリシーを示しています。
-
Policy Nameと説明を入力し、確認 をクリックします。セキュリティ検証を完了します。
-
-
拒否ポリシーのアタッチ
対象の RAM ユーザー、ユーザーグループ、またはロールにポリシーをアタッチします。
-
RAM コンソールにログインします。左側メニューで、 を選択します。
-
Users ページで、対象の RAM ユーザーを見つけ、Actions 列の Attach Policy をクリックします。
-
Attach Policy パネルで、拒否ポリシーを選択し、Grant permissions をクリックします。
-