すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:RAM 拒否ポリシーによるセキュリティベースラインの適用

最終更新日:Apr 28, 2026

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 ステートメントを追加します:

  1. Deny の優先:RAM は、適用可能なすべてのポリシーをチェックします。 いずれかのステートメントが Deny と評価された場合、他のステートメントが Allow と評価されたとしても、リクエストは拒否されます。

  2. 条件による正確な制約: Deny ステートメントには condition ブロックを含めることができます。この Deny は、リクエストがポリシーの ActionResource、および 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 ポリシーは非準拠のリクエストを拒否します。

  1. 制約する操作と条件の特定

    適用するセキュリティルールを特定し、対応する RAM アクションと条件キーを見つけます。 条件キーは、クラウドサービス API が評価のために RAM に公開するパラメーターです。 たとえば、ecs:RunInstances でサポートされているすべての条件キーについては、RunInstances の「承認情報」セクションをご参照ください。

  2. 条件付き拒否ポリシーの作成

    1. RAM コンソールにログインします。左側メニューで、Permissions > Policies を選択します。

    2. 「ポリシー」ページで、Create Policy をクリックします。

    3. Create Policy ページで、JSON タブをクリックします。ポリシードキュメントを入力し、はい をクリックします。

      以下の例は、一般的な拒否ポリシーを示しています。

      例 1:ECS インスタンスへのパブリック IP の禁止

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Deny",
            "Action": "ecs:RunInstances",
            "Resource": "acs:ecs:*:*:instance/*",
            "Condition": {
              "Bool": {
                "ecs:AssociatePublicIpAddress": "true"
              }
            }
          }
        ]
      }

      例 2:ECS インスタンスへのキーペアログインの強制

      "Null": {"ecs:KeyPairName": "true"} は、ecs:KeyPairName が null (キーペアが指定されていない) の場合、Deny が有効になることを意味します。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "ecs:RunInstances",
                  "Effect": "Deny",
                  "Resource": "acs:ecs:*:*:instance/*",
                  "Condition": {
                      "Null": {
                          "ecs:KeyPairName": "true"
                      }
                  }
              }
          ]
      }

      例 3:高リスクポートのインターネットへの公開禁止

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "ecs:AuthorizeSecurityGroup",
                  "Effect": "Deny",
                  "Resource": "acs:ecs:*:*:securitygroup/*",
                  "Condition": {
                      "StringEquals": {
                          "ecs:SourceCidrIp": "0.0.0.0/0"
                      },
                      "ForAnyValue:StringEquals": {
                          "ecs:PortRange": [
                              "22/22",
                              "3389/3389",
                              "3306/3306",
                              "6379/6379",
                              "27017/27017"
                          ]
                      }
                  }
              }
          ]
      }

      注: ForAnyValue:StringEquals は、リクエスト内のいずれかのポート範囲がポリシー内の値と一致するかどうかをチェックします。一致した場合、条件は true と評価されます。

    4. Policy Name説明を入力し、確認 をクリックします。セキュリティ検証を完了します。

  3. 拒否ポリシーのアタッチ

    対象の RAM ユーザー、ユーザーグループ、またはロールにポリシーをアタッチします。

    1. RAM コンソールにログインします。左側メニューで、Identities > Users を選択します。

    2. Users ページで、対象の RAM ユーザーを見つけ、Actions 列の Attach Policy をクリックします。

    3. Attach Policy パネルで、拒否ポリシーを選択し、Grant permissions をクリックします。