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

Auto Scaling:タグベース認証によるAuto Scalingリソースの管理

最終更新日:Sep 12, 2024

Auto Scalingでは、スケーリンググループをタイプ別に管理し、スケーリンググループへのアクセスを制御できます。 RAM (Resource Access Management) ユーザーに特定のスケーリンググループに対する権限を付与して、きめ細かなアクセス制御を行うことができます。 タグに基づいてスケーリンググループに権限を付与することもできます。 このトピックでは、タグベースの認証によってRAMユーザーからスケーリンググループへのアクセスを制御する方法について説明します。 これにより、さまざまなRAMユーザーがビジネス要件に基づいてさまざまな権限を取得できるようになり、リソース管理の効率が向上し、情報漏洩のリスクが軽減されます。

背景情報

  • タグは、クラウドリソースの識別子である。 タグを使用すると、異なるディメンションから同一の特性を持つクラウドリソースを分類、検索、および集計できます。 タグの詳細については、「タグ」をご参照ください。

  • RAMを使用すると、ポリシーに基づいてユーザーIDとクラウドリソースへのアクセスと操作権限を管理できます。 詳細については、「RAM の概要」をご参照ください。

タグをRAMポリシーの条件として使用して、Auto Scalingリソースに対してきめ細かいアクセス制御を実行できます。

タグを使用してRAMユーザーのリソースアクセスと操作権限を管理する方法を次の図に示します。これはタグベースの認証と呼ばれます。

image

タグベースの認証をサポートしないAPI操作

タグベースのポリシーをRAMユーザーにアタッチする場合、RAMユーザーが次のAPI操作を呼び出すときに、タグベースの認証はサポートされません。

操作

タグベース認証のサポートなし

DescribeRegions

課金されます

スケジュールされたタスクに関連する操作:

  • CreateScheduledTask

  • ModifyScheduledTask

  • DescribeScheduledTasks

  • DeleteScheduledTask

課金されます

イベントトリガータスクに関連する操作:

  • CreateAlarm

  • DescribeAlarms

  • ModifyAlarm

  • EnableAlarm

  • DeleteAlarm

課金されます

サンプルシナリオ

次のシナリオは、タグベースの認証を実行する方法を説明するために使用されます。

たとえば、ゲーム開発用に2つのスケーリンググループがあり、各スケーリンググループに追加されるタグには環境キーとチームキーが含まれています。 RAMユーザーからスケーリンググループへのアクセスを制御します。

スケーリンググループ

名前

タグ

スケーリンググループ1

asg-001

  • タグ1はenvironment:testで、environmentはタグキー、testはタグ値です。

  • タグ2はteam:game1で、teamはタグキー、game1はタグ値です。

スケーリンググループ2

asg-002

  • タグ1はenvironment:devで、environmentはタグキー、devはタグ値です。

  • タグ2はteam:game2で、teamはタグキー、game2はタグ値です。

シナリオの詳細:

  • シナリオ1: RAMユーザーは、タグのないスケーリンググループを作成できません。 RAMユーザーがスケーリンググループ1を作成する場合は、作成時にenvironment:testおよびteam:game1タグを追加する必要があります。 そうでない場合、スケーリンググループ1の作成に失敗します。

  • シナリオ2: RAMユーザーは、タグenvironment:testとタグteam:game1を持つスケーリンググループ1のリソースのみを照会できます。

  • シナリオ3: RAMユーザーは、タグenvironment:testとタグteam:game1を持つスケーリンググループ1のリソースのみを操作できます。 RAMユーザーは、タグenvironment:devとタグteam:game2を持つスケーリンググループ2のリソースを操作できません。

手順

説明

次の手順を実行する前に、RAMユーザーが作成されていることを確認してください。 RAMユーザーの作成方法については、「RAMユーザーの作成」をご参照ください。

  1. 2つのスケーリンググループを作成します。

    詳細については、「スケーリンググループの管理」をご参照ください。 サンプルシナリオを参照して、スケーリンググループを作成します。

  2. RAMコンソールにログインします。

  3. カスタムポリシーを作成します。

    詳細については、「カスタムポリシーの作成」をご参照ください。

    カスタムポリシーのCondition要素に複数のタグを定義できます。 これにより、Auto Scalingリソースへのアクセスを制限できます。 次の表に、Condition要素で指定できるタグベースの条件を示します。

    タグベースの条件

    説明

    acs:RequestTag

    API呼び出し元は、各APIリクエストに特定のタグを含める必要があります。

    APIリクエストにタグ関連のパラメーターが含まれていない場合、acs:RequestTag条件は使用できません。 そうでない場合、認証は失敗します。

    acs:ResourceTag

    API呼び出し元は、指定されたリソースに特定のタグを追加する必要があります。

    APIリクエストにリソースIDが含まれていない場合、acs:ResourceTag条件は使用できません。 そうでない場合、認証は失敗します。

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

    {
        "Version": "1",
        "Statement": [
             {
               "Effect": "Allow",
               "Action": "ess:Create*",
               "Resource": "*",
               "Condition": {
                       "StringEquals": {
                            "acs:RequestTag/environment": "test",
                            "acs:RequestTag/team": "game1"
                       }
                  }
             },
             {
                "Effect": "Allow",
                "Action": "ess:Describle*",
                "Resource": "*",
                "Condition": {
                        "StringEquals": {
                        "acs:RequestTag/environment": "test",
                        "acs:RequestTag/team": "game1"
                        }
                  }
             },
             {
                "Action": "ess:*",
                "Effect": "Allow",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "acs:ResourceTag/environment": "test",
                        "acs:ResourceTag/Team": "game1"
                      }
                  }
             },
             {
                "Effect": "Allow",
                "Action": [
                       "ess:Describe*",
                       "ess:List*",
                       "ess:DescribeRegions",
                       "ess:CreateScheduledTask",
                       "ess:ModifyScheduledTask",
                       "ess:DescribeScheduledTasks",
                       "ess:DeleteScheduledTask",
                       "ess:CreateAlarm",
                       "ess:DescribeAlarms",
                       "ess:ModifyAlarm",
                       "ess:EnableAlarm",
                       "ess:DeleteAlarm"
                    ],
        "Resource": "*"
          }
       ]
    }
    • シナリオ1: RAMユーザーがタグのないスケーリンググループを作成できない

      スケーリンググループ1は、RAMユーザーが作成中にタグenvironment:testとタグteam:game1をスケーリンググループ1に追加した後にのみ作成できます。

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

      {
          "Effect": "Allow",
          "Action": "ess:Create*",
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "acs:RequestTag/environment": "test",
                  "acs:RequestTag/team": "game1"
              }
          }
      }
    • シナリオ2: RAMユーザーはタグを持つスケーリンググループ1のみを照会できます

      タグenvironment:testとタグteam:game1がスケーリンググループ1に追加された後、スケーリンググループ1のリソースを照会できます。

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

      {
          "Effect": "Allow",
          "Action": "ess:Describle*",
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "acs:RequestTag/environment": "test",
                  "acs:RequestTag/team": "game1"
              }
          }
      }
    • シナリオ3: RAMユーザーはスケーリンググループ1のリソースのみを操作できます

      RAMユーザーは、タグenvironment:testとタグteam:game1を持つスケーリンググループ1のリソースを操作できます。 RAMユーザーは、タグenvironment:devとタグteam:game2を持つスケーリンググループ2のリソースを操作できません。

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

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "ess:*",
                  "Effect": "Allow",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "acs:ResourceTag/environment": "test",
                          "acs:ResourceTag/Team": "game1"
                      }
                  }
              },
              {
                  "Action": "ess:*",
                  "Effect": "Deny",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "acs:ResourceTag/environment": "dev",
                          "acs:ResourceTag/team": "game2"
                      }
                  }
              },      
              {
                 "Effect": "Allow",
                 "Action": [
                         "ess:DescribeRegions",
                         "ess:CreateScheduledTask",
                         "ess:ModifyScheduledTask",
                         "ess:DescribeScheduledTasks",
                         "ess:DeleteScheduledTask",
                         "ess:CreateAlarm",
                         "ess:DescribeAlarms",
                         "ess:ModifyAlarm",
                         "ess:EnableAlarm",
                         "ess:DeleteAlarm"
                      ],
          "Resource": "*"
            }
         ]
      }
  4. 上記のカスタムポリシーを、アクセスを制御するRAMユーザーにアタッチします。

    詳細については、「RAMユーザーへの権限付与」をご参照ください。

  5. カスタムポリシーが有効かどうかを確認します。

    • 許可されたRAMユーザーとしてスケーリンググループ1を作成

      • スケーリンググループの作成時にタグenvironment:testとタグteam:game1をスケーリンググループ1に追加すると、スケーリンググループ1を作成できます。

      • 上記のタグをスケーリンググループ1に追加しない場合、または作成中に他のタグをスケーリンググループ1に追加する場合、スケーリンググループ1は作成できません。 次の図に示すように、必要な権限がないことを示すメッセージが表示されます。 资源级别鉴权执行结果

    • 許可されたRAMユーザーとしてのスケーリンググループの照会

      • フィルター条件としてタグを指定しなくても、タグenvironment:testとタグteam:game1を持つスケーリンググループ1を照会できます。

      • タグenvironment:testとタグteam:game1がないスケーリンググループを照会すると、nullが返されます。

      • クエリするスケーリンググループを指定せず、タグenvironment:testおよびteam:game1のみを検索すると、タグを持つすべてのスケーリンググループが返されます。

    • スケーリンググループを許可されたRAMユーザーとして削除する

      • スケーリンググループ1には、タグenvironment:testとタグteam:game1があります。 スケーリンググループ1を削除できます。

      • スケーリンググループ2には、タグenvironment:testとタグteam:game1がないか、その他のタグがあります。 スケーリンググループ2を削除すると、次の図に示すように、必要な権限がないことを示すメッセージが表示されます。 资源级别鉴权执行结果

参照