Auto Scalingでは、スケーリンググループをタイプ別に管理し、スケーリンググループへのアクセスを制御できます。 RAM (Resource Access Management) ユーザーに特定のスケーリンググループに対する権限を付与して、きめ細かなアクセス制御を行うことができます。 タグに基づいてスケーリンググループに権限を付与することもできます。 このトピックでは、タグベースの認証によってRAMユーザーからスケーリンググループへのアクセスを制御する方法について説明します。 これにより、さまざまなRAMユーザーがビジネス要件に基づいてさまざまな権限を取得できるようになり、リソース管理の効率が向上し、情報漏洩のリスクが軽減されます。
背景情報
タグは、クラウドリソースの識別子である。 タグを使用すると、異なるディメンションから同一の特性を持つクラウドリソースを分類、検索、および集計できます。 タグの詳細については、「タグ」をご参照ください。
RAMを使用すると、ポリシーに基づいてユーザーIDとクラウドリソースへのアクセスと操作権限を管理できます。 詳細については、「RAM の概要」をご参照ください。
タグをRAMポリシーの条件として使用して、Auto Scalingリソースに対してきめ細かいアクセス制御を実行できます。
タグを使用してRAMユーザーのリソースアクセスと操作権限を管理する方法を次の図に示します。これはタグベースの認証と呼ばれます。
タグベースの認証をサポートしないAPI操作
タグベースのポリシーをRAMユーザーにアタッチする場合、RAMユーザーが次のAPI操作を呼び出すときに、タグベースの認証はサポートされません。
操作 | タグベース認証のサポートなし |
DescribeRegions | 課金されます |
スケジュールされたタスクに関連する操作:
| 課金されます |
イベントトリガータスクに関連する操作:
| 課金されます |
サンプルシナリオ
次のシナリオは、タグベースの認証を実行する方法を説明するために使用されます。
たとえば、ゲーム開発用に2つのスケーリンググループがあり、各スケーリンググループに追加されるタグには環境キーとチームキーが含まれています。 RAMユーザーからスケーリンググループへのアクセスを制御します。
スケーリンググループ | 名前 | タグ |
スケーリンググループ1 | asg-001 |
|
スケーリンググループ2 | asg-002 |
|
シナリオの詳細:
シナリオ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ユーザーの作成」をご参照ください。
2つのスケーリンググループを作成します。
詳細については、「スケーリンググループの管理」をご参照ください。 サンプルシナリオを参照して、スケーリンググループを作成します。
RAMコンソールにログインします。
カスタムポリシーを作成します。
詳細については、「カスタムポリシーの作成」をご参照ください。
カスタムポリシーの
Condition
要素に複数のタグを定義できます。 これにより、Auto Scalingリソースへのアクセスを制限できます。 次の表に、Condition要素で指定できるタグベースの条件を示します。タグベースの条件
説明
acs:RequestTag
API呼び出し元は、各APIリクエストに特定のタグを含める必要があります。
APIリクエストにタグ関連のパラメーターが含まれていない場合、
acs:RequestTag
条件は使用できません。 そうでない場合、認証は失敗します。acs:ResourceTag
API呼び出し元は、指定されたリソースに特定のタグを追加する必要があります。
APIリクエストにリソースIDが含まれていない場合、
acs:ResourceTag
条件は使用できません。 そうでない場合、認証は失敗します。シナリオ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": "*" } ] }
上記のカスタムポリシーを、アクセスを制御するRAMユーザーにアタッチします。
詳細については、「RAMユーザーへの権限付与」をご参照ください。
カスタムポリシーが有効かどうかを確認します。
許可された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を削除すると、次の図に示すように、必要な権限がないことを示すメッセージが表示されます。
参照
API操作を呼び出してスケーリンググループを作成する方法については、「CreateScalingGroup」をご参照ください。 API操作を呼び出してスケーリンググループをクエリする方法については、「DescribeScalingGroups」をご参照ください。 APIを呼び出してスケーリンググループを削除する方法については、「DeleteScalingGroup」をご参照ください。
カスタムポリシーの作成方法については、「CreatePolicy」をご参照ください。
RAMユーザーに権限を付与する方法については、「AttachPolicyToUser」をご参照ください。
リソースグループごとにスケーリンググループを管理する方法については、「リソースグループを使用してスケーリンググループを詳細に管理する」をご参照ください。
リソース認証によるAuto Scalingリソースの管理方法については、「リソース認証によるAuto Scalingリソースの管理」をご参照ください。