Application Auto Scaling で IAM が機能する仕組み
注記
2017 年 12 月、Application Auto Scaling の更新が行われ、Application Auto Scaling 統合サービスのために複数のサービスリンクロールが有効化されました。ユーザーがスケーリングを設定できるようにするには、特定の IAM 許可、および Application Auto Scaling サービスリンクロール (または Amazon EMR オートスケーリング用のサービスロール) が必要です。
IAM を使用して Application Auto Scaling へのアクセスを管理する前に、Application Auto Scaling で使用できる IAM 機能を理解しておく必要があります。
IAM の機能 | アプリケーションの自動スケーリングのサポート |
---|---|
あり |
|
あり |
|
はい |
|
あり |
|
なし |
|
なし |
|
部分的 |
|
あり |
|
あり |
|
あり |
Application Auto Scaling などの AWS のサービス が大部分の IAM 機能とどのように連携するかについての概要は、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。
Application Auto Scaling のアイデンティティベースポリシー
アイデンティティベースのポリシーのサポート: あり
アイデンティティベースポリシーは、IAM ユーザーグループ、ユーザーのグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースのポリシーを作成する方法については、IAM ユーザーガイドのカスタマー管理ポリシーでカスタム IAM アクセス許可を定義するを参照してください。
IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、およびアクションを許可または拒否する条件を指定できます。プリンシパルは、それが添付されているユーザーまたはロールに適用されるため、アイデンティティベースのポリシーでは指定できません。JSON ポリシーで使用できるすべての要素について学ぶには、IAM ユーザーガイドのIAM JSON ポリシーの要素のリファレンスを参照してください。
Application Auto Scaling のアイデンティティベースポリシー例
Application Auto Scaling のアイデンティティベースポリシーの例については、「Application Auto Scaling のアイデンティティベースポリシー例」を参照してください。
アクション
ポリシーアクションのサポート: あり
IAM ポリシーステートメントで、IAM をサポートするすべてのサービスからの任意の API アクションを指定できます。Application Auto Scaling の場合、API アクション application-autoscaling:
の名前に次のプレフィックスを使用します。例えば、application-autoscaling:RegisterScalableTarget
、application-autoscaling:PutScalingPolicy
、および application-autoscaling:DeregisterScalableTarget
のようになります。
1 つのステートメントで複数のアクションを指定するには、次の例のようにカンマで区切ります。
"Action": [ "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScalingActivities"
ワイルドカード (*) を使用して複数のアクションを指定することができます。例えば、Describe
という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。
"Action": "application-autoscaling:Describe*"
Application Auto Scaling のアクションの完全なリストについては、「Service Authorization Reference」の「AWS Application Auto Scaling で定義されたアクション」を参照してください。
リソース
ポリシーリソースのサポート: あり
IAM ポリシーステートメントで、Resource
要素は、ステートメントがカバーするオブジェクトを指定します。Application Auto Scaling の場合、Amazon リソースネーム (ARN) を使用して指定したスケーラブルターゲットに、各 IAM ポリシーステートメントが適用されます。
スケーラブルターゲットの ARN リソース形式:
arn:aws:application-autoscaling:region
:account-id
:scalable-target/unique-identifier
例えば、以下の要領で ARN を使用して、ステートメント内で特定のスケーラブルターゲットを指定することができます。ユニーク ID (1234abcd56ab78cd901ef1234567890ab123) は、Application Auto Scaling によってスケーラブルターゲットに割り当てられる値です。
"Resource": "arn:aws:application-autoscaling:us-east-1:123456789012:scalable-target/1234abcd56ab78cd901ef1234567890ab123"
次のように、一意の識別子をワイルドカード (*) に置き換えることで、特定のアカウントに属するすべてのインスタンスを指定できます。
"Resource": "arn:aws:application-autoscaling:us-east-1:123456789012:scalable-target/*"
すべてのリソースを指定する場合、または特定の API アクションが ARN をサポートしていない場合は、以下のように、Resource
エレメント内でワイルドカード (*) を使用します。
"Resource": "*"
詳細については、Service Authorization Reference の「AWS Application Auto Scaling で定義されているリソースタイプ」を参照してください。
条件キー
サービス固有のポリシー条件キーのサポート: あり
Application Auto Scaling リソースへのアクセスを制御する IAM ポリシーで条件を指定できます。ポリシーステートメントは、条件が true の場合にのみ有効です。
Application Auto Scaling は、Application Auto Scaling API アクションを実行できるユーザーを決定するためにアイデンティティベースのポリシーで使用できる次のサービス定義条件キーをサポートしています。
-
application-autoscaling:scalable-dimension
-
application-autoscaling:service-namespace
条件キーを使用できる Application Auto Scaling API アクションについて理解するには、「Service Authorization Reference」の「AWS Application Auto Scaling で定義されるアクション」を参照してください。Application Auto Scaling 条件キーの使用に関する詳細については、「AWS Application Auto Scaling の条件キー」を参照してください。
すべてのサービスで使用できるグローバル条件キーを確認するには、IAM User Guide の「AWS global condition context keys」を参照してください。
リソースベースのポリシー
リソースベースのポリシーのサポート: なし
Amazon Simple Storage Service などの AWS のその他サービスでは、リソースベースの許可ポリシーがサポートされています。例えば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス許可を管理できます。
Application Auto Scaling は、リソースベースポリシーをサポートしません。
アクセスコントロールリスト (ACL)
ACL のサポート: なし
Application Auto Scaling は、アクセスコントロールリスト (ACL) をサポートしません。
ABAC と Application Auto Scaling
ABAC (ポリシー内のタグ) のサポート: 一部
属性ベースのアクセス制御 (ABAC) は、属性に基づいてアクセス許可を定義する認可戦略です。AWS では、属性は タグ と呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール)、および多数の AWS リソースにアタッチできます。エンティティとリソースのタグ付けは、ABAC の最初の手順です。その後、プリンシパルのタグがアクセスしようとしているリソースのタグと一致した場合にオペレーションを許可するように ABAC ポリシーをします。
ABAC は、急成長する環境やポリシー管理が煩雑になる状況で役立ちます。
タグに基づいてアクセスを管理するには、aws:ResourceTag/
、key-name
aws:RequestTag/
、または key-name
aws:TagKeys
の条件キーを使用して、ポリシーの 条件要素でタグ情報を提供します。
ABAC はタグをサポートするリソースでは可能ですが、すべてのリソースがタグをサポートしているわけではありません。スケジュールされたアクションとスケーリングポリシーはタグをサポートしていませんが、スケーラブルターゲットはタグをサポートしています。詳細については、「Application Auto Scaling のタグ付けサポート」を参照してください。
ABAC の詳細については、IAM ユーザーガイドのABAC とは?を参照してください。ABAC をセットアップするステップを説明するチュートリアルについては、IAM ユーザーガイドの属性に基づくアクセスコントロール (ABAC) を使用するを参照してください。
Application Auto Scaling での一時的な認証情報の使用
一時的な認証情報のサポート: あり
AWS のサービス には、一時的な認証情報を使用してサインインしても機能しないものがあります。一時的な認証情報を利用できる AWS のサービス を含めた詳細情報については、「IAM ユーザーガイド」の「IAM と連携する」AWS のサービスを参照してください。
ユーザー名とパスワード以外の方法で AWS Management Console にサインインする場合は、一時的な認証情報を使用していることになります。例えば、会社のシングルサインオン (SSO) リンクを使用して AWS にアクセスすると、そのプロセスは自動的に一時認証情報を作成します。また、ユーザーとしてコンソールにサインインしてからロールを切り替える場合も、一時的な認証情報が自動的に作成されます。ロールの切り替えに関する詳細については、「IAM ユーザーガイド」の「ユーザーから IAM ロールへの切り替え (コンソール操作)」を参照してください。
一時認証情報は、AWS CLIまたは AWS API を使用して手動で作成できます。作成後、一時認証情報を使用して AWS にアクセスできるようになります。AWSは、長期的なアクセスキーを使用する代わりに、一時認証情報を動的に生成することをお勧めします。詳細については、IAM の一時的セキュリティ認証情報を参照してください。
サービスロール
サービスロールのサポート: あり
Amazon EMR クラスターがオートスケーリングを使用する場合、この機能は、Application Auto Scaling がユーザーに代わってサービスロールを引き受けることを許可します。サービスリンクロールと同様に、サービスロールは、サービスがユーザーに代わって他のサービスのリソースにアクセスし、アクションを完了することを許可します。サービスロールは、IAM アカウントに表示され、アカウントによって所有されます。つまり、IAM 管理者は、このロールの権限を変更できます。ただし、それにより、サービスの機能が損なわれる場合があります。
Application Auto Scaling は、Amazon EMR に対してのみサービスロールをサポートします。EMR サービスロールのドキュメントについては、Amazon EMR 管理ガイドの「Using automatic scaling with a custom policy for instance groups」を参照してください。
注記
サービスにリンクされたロールの導入により、いくつかのレガシーサービスロールは不要になりました。例えば、Amazon ECS やスポットフリートなどです。
サービスリンクロール
サービスリンクロールのサポート: あり
サービスにリンクされたロールは、AWS のサービスにリンクされているサービスロールの一種です。サービスがロールを引き受け、ユーザーに代わってアクションを実行できるようになります。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールのアクセス許可を表示できますが、編集することはできません。
Application Auto Scaling 用のサービスリンクロールの詳細については、「Application Auto Scaling 用のサービスリンクロール」を参照してください。