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

Elastic Compute Service:RAMユーザーがリスクの高いセキュリティグループルールを作成することを禁止する

最終更新日:Aug 27, 2024

1つ以上の条件キーを含むカスタムRAM (Resource Access Management) ポリシーをRAMユーザーにアタッチして、セキュリティグループまたはセキュリティグループルールを作成するためのRAMユーザーの権限に制限を課すことができます。 たとえば、カスタムRAMポリシーを使用して、RAMユーザーが特定のIPアドレスとプロトコルを含むセキュリティグループルールを作成することを禁止したり、RAMユーザーが特定の承認オブジェクト (トラフィックの送信元または送信先) を含むセキュリティグループルールのみを作成できるようにしたり、RAMユーザーがElastic Compute Service (ECS) インスタンスを作成するときにデフォルトのセキュリティグループを使用することを禁止したりできます。 これにより、Alibaba Cloudアカウントのセキュリティを向上させることができます。 このトピックでは、RAM条件キーを使用して、RAMユーザーがリスクの高いセキュリティグループルールを作成できないようにする方法について説明します。

背景情報

セキュリティグループは、脅威に対する最初の最も重要な防御線として機能し、クラウドでのセキュリティ分離を提供します。 実際のビジネスシナリオでは、セキュリティグループルールが適切に構成されていない場合があります。 たとえば、セキュリティグループルールは、ポート22、3389、80、8080、443などの機密ポートを開くように設定されているか、またはIPv4アドレスへのアクセスまたはIPv4アドレスからのアクセスを許可するための許可オブジェクトとして0.0.0.0/0を含みます。 不適切に設定されたセキュリティグループルールに関連付けられているECSインスタンスやApsaraDB RDSインスタンスなどのクラウドリソースは、攻撃や侵入に対して脆弱です。 この場合、セキュリティの問題が発生する可能性があります。

多数のRAMユーザーが異なる権限と異なるビジネス要件を持つ場合、RAMユーザーによって作成されたセキュリティグループルールが、クラウドのセキュリティを向上させるためのトップダウンのセキュリティベースラインと要件を満たしていることを確認する必要があります。 RAMコンソールでRAMユーザーのポリシーを設定して、RAMユーザーがリスクの高いセキュリティグループルールを作成または参照できないようにし、セキュリティグループルールの一貫した管理を実現できます。

RAMを使用すると、リソース、操作、条件など、関連する要素を正確に記述するカスタムポリシーを作成できます。 特定の本番アカウントまたは機密アカウントについては、RAMポリシーを使用して、RAMユーザーに特定のアクセス許可を付与できます。 RAMポリシーで条件を指定して、特定の高リスクのセキュリティグループルールを禁止したり、特定のリスクのないセキュリティグループルールのみを許可したりできます。 詳細については、「ポリシー要素」トピックの条件セクションをご参照ください。

実装の原則

RAM条件キーを使用して、次の方法で高リスクのセキュリティグループルールを禁止できます。

  • 特定のIPアドレスとプロトコルを含むセキュリティグループルールを禁止し、特定のリスクフリーのセキュリティグループルールのみを許可します。

  • ECSインスタンスの作成中にデフォルトのセキュリティグループが使用されないようにします。

説明

デフォルトのセキュリティグループには機密セキュリティグループルールが含まれています。 詳細については、「デフォルトのセキュリティグループ」をご参照ください。

次の表に、使用できるRAM条件キーを示します。

条件キー

データ型

説明

ecs:SecurityGroupIpProtocols

String

トランスポート層プロトコル。 例: TCPおよびICMP。

ecs:SecurityGroupSourceCidrIps

String

ソースIPv4 CIDRブロック。 IPv4 CIDRブロックとIPv4アドレスがサポートされています。

ecs: NotSpecificySecurityGroupId

Boolean

セキュリティグループIDを指定するかどうかを指定します。

説明
  • 条件キーが配列の場合、セキュリティグループルールが配列内の値と一致すると、条件が満たされます。

  • 同じ条件で2つの条件キーが指定されている場合、セキュリティグループルールが両方の条件キーに一致すると、条件が満たされます。

手順

  1. RAM条件キーを含むカスタムポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。

    このセクションと「結果の検証」セクションでは、このトピックの「例2: RAMユーザーが権限付与オブジェクトとして0.0.0.0/0を含むセキュリティグループルールを作成することを禁止するカスタムポリシー」セクションで説明されているカスタムポリシーが作成され、検証されます。

    説明

    サンプルカスタムポリシーを表示するには、このトピックのサンプルカスタムポリシーを参照してください。

  2. カスタムポリシーをRAMユーザーにアタッチします。 詳細については、「RAM ユーザーへの権限の付与」をご参照ください。

Verify the result

  1. RAMユーザーを使用してECSコンソールにログインします。

  2. 次の操作を実行して、作成したカスタムポリシーがRAMユーザーに対して期待どおりに有効になるかどうかを確認します。

    1. ECSインスタンスを作成するリージョンにカスタムセキュリティグループが作成されていないことを確認します。 次に、デフォルトのセキュリティグループを使用してECSインスタンスを作成します。 ECSインスタンスの作成方法については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

      説明

      ECSインスタンスの作成時に選択したリージョンにカスタムセキュリティグループを作成しなかった場合、デフォルトセキュリティグループが自動的に作成されます。

      次の図に示すエラーメッセージがECSインスタンスの購入ページに表示された場合、使用するRAMユーザーはデフォルトのセキュリティグループを使用できません。

      image

    2. セキュリティグループを選択し、セキュリティグループにセキュリティグループルールを作成します。 セキュリティグループルールの [権限付与オブジェクト] パラメーター (ソース) を0.0.0.0/0に設定します。 詳細については、「セキュリティグループルールの追加」をご参照ください。

      セキュリティグループルールを作成できず、次の図に示すエラーメッセージが表示された場合、RAMユーザーは [権限付与オブジェクト] パラメーターが0.0.0.0/0に設定されているセキュリティグループルールを作成できません。

      image

サンプルカスタムポリシー

例1: RAMユーザーが特定の権限付与オブジェクトを含むセキュリティグループルールのみを作成できるようにするカスタムポリシー

  • RAMユーザーが権限付与オブジェクト (ソース) として140.205.XX.XX/27または140.205.XX.XX/28を含むセキュリティグループルールのみを作成でき、RAMユーザーが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アクセスを制御し、RAMユーザーが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を含むセキュリティグループルールを作成し、RAMユーザーが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ポリシーの構文、構造、および評価プロセスをよく理解してください。 詳細については、「ポリシーの構造と構文」および「ポリシー評価プロセス」をご参照ください。

  • サンプルRAMポリシーを表示するには、「ポリシーの例」をご参照ください。