Amazon EC2 Auto Scaling と IAM の連携
IAM を使用して Amazon EC2 Auto Scaling へのアクセスを管理する前に、Amazon EC2 Auto Scaling で使用できる IAM 機能について理解しておく必要があります。
Amazon EC2 Auto Scaling で使用できる IAM 機能 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
IAM 機能 | Amazon EC2 Auto Scaling サポート | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
いいえ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
いいえ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
部分的 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
はい |
Amazon EC2 Auto Scaling などの AWS のサービス が大部分の IAM 機能とどのように連携するかについての概要は、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。
Amazon EC2 Auto Scaling のアイデンティティベースのポリシー
アイデンティティベースのポリシーのサポート |
はい |
アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON アクセス許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件を制御します。アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「IAM ポリシーの作成」を参照してください。
IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、アクションを許可または拒否する条件を指定できます。プリンシパルは、それが添付されているユーザーまたはロールに適用されるため、アイデンティティベースのポリシーでは指定できません。JSON ポリシーで使用できるすべての要素について学ぶには、「IAM ユーザーガイド」の「IAM JSON ポリシーの要素のリファレンス」を参照してください。
Amazon EC2 Auto Scaling 内のリソースベースのポリシー
リソースベースのポリシーのサポート |
いいえ |
リソースベースのポリシーは、リソースにアタッチする JSON ポリシードキュメントです。リソースベースのポリシーには例として、IAM ロールの信頼ポリシーや Amazon S3 バケットポリシーがあげられます。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスを制御できます。ポリシーが添付されているリソースの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーで、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または AWS のサービス を含めることができます。
クロスアカウントアクセスを有効にするには、全体のアカウント、または別のアカウントの IAM エンティティを、リソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが異なる AWS アカウント にある場合、信頼できるアカウントの IAM 管理者は、リソースにアクセスするための許可をプリンシパルエンティティ (ユーザーまたはロール) に付与する必要もあります。IAM 管理者は、アイデンティティベースのポリシーをエンティティにアタッチすることで許可を付与します。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、ID ベースのポリシーをさらに付与する必要はありません。詳細については、IAM ユーザーガイドの「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。
Amazon EC2 Auto Scaling のポリシーアクション
ポリシーアクションに対するサポート |
はい |
管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どの プリンシパル がどの リソース に対してどのような 条件 下で アクション を実行できるかということです。
JSON ポリシーの Action
要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションのない許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。
このアクションは、関連付けられたオペレーションを実行するための許可を付与するポリシーで使用されます。
Amazon EC2 Auto Scaling アクションのリストを確認するには、「サービス認証リファレンス」の「Amazon EC2 Auto Scaling で定義されるアクション」を参照してください。
Amazon EC2 Auto Scaling のポリシーアクションは、アクションの前に以下のプレフィックスを使用します。
autoscaling
単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。
"Action": [ "autoscaling:
action1
", "autoscaling:action2
" ]
ワイルドカード (*) を使用して複数のアクションを指定できます。たとえば、Describe
という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。
"Action": "autoscaling:
Describe*
"
Amazon EC2 Auto Scaling のポリシーリソース
ポリシーリソースに対するサポート |
はい |
管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
Resource
JSON ポリシー要素は、オブジェクトあるいはアクションが適用されるオブジェクトを指定します。ステートメントには、Resource
または NotResource
要素を含める必要があります。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。これは、リソースレベルの許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。
オペレーションのリスト化など、リソースレベルの許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。
"Resource": "*"
ARN を使用して、IAM ポリシーを適用する Auto Scaling グループと起動設定を特定できます。
Auto Scaling グループには、次の ARN があります。
"Resource": "arn:aws:autoscaling:region
:account-id
:autoScalingGroup:uuid
:autoScalingGroupName/asg-name
"
起動設定には次の ARN があります。
"Resource": "arn:aws:autoscaling:region
:account-id
:launchConfiguration:uuid
:launchConfigurationName/lc-name
"
CreateAutoScalingGroup
アクションを使用して Auto Scaling グループを指定するには、次の例に示すように UUID をワイルドカード (*
) に置き換える必要があります。
"Resource": "arn:aws:autoscaling:region
:account-id
:autoScalingGroup:*:autoScalingGroupName/asg-name
"
CreateLaunchConfiguration
アクションを使用して起動設定を指定するには、次の例に示すように UUID をワイルドカード (*
) に置き換える必要があります。
"Resource": "arn:aws:autoscaling:region
:account-id
:launchConfiguration:*:launchConfigurationName/lc-name
"
Amazon EC2 Auto Scaling リソースタイプ、およびその ARN の詳細については、「サービス認証リファレンス」の「Amazon EC2 Auto Scaling で定義されるリソースタイプ」を参照してください。各リソースの ARN を指定できるアクションについては、「Amazon EC2 Auto Scaling で定義されるアクション」を参照してください。
注記
ARN を使用して Auto Scaling グループへのアクセスを制御する IAM ポリシーの例については、「削除できる Auto Scaling グループを制御する」を参照してください。。
現在、すべての Amazon EC2 Auto Scaling アクションがリソースレベルのアクセス許可をサポートしているわけではありません。リソースレベルの許可をサポートしていないアクションの場合、ワイルドカード (*
) をリソースとして使用する必要があります。
次の Amazon EC2 Auto Scaling アクションは、リソースレベルのアクセス許可をサポートしていません。
-
DescribeAccountLimits
-
DescribeAdjustmentTypes
-
DescribeAutoScalingGroups
-
DescribeAutoScalingInstances
-
DescribeAutoScalingNotificationTypes
-
DescribeInstanceRefreshes
-
DescribeLaunchConfigurations
-
DescribeLifecycleHooks
-
DescribeLifecycleHookTypes
-
DescribeLoadBalancers
-
DescribeLoadBalancerTargetGroups
-
DescribeMetricCollectionTypes
-
DescribeNotificationConfigurations
-
DescribePolicies
-
DescribeScalingActivities
-
DescribeScalingProcessTypes
-
DescribeScheduledActions
-
DescribeTags
-
DescribeTerminationPolicyTypes
-
DescribeWarmPool
Amazon EC2 Auto Scaling のポリシー条件キー
サービス固有のポリシー条件キーのサポート |
はい |
管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
Condition
要素 (または Condition
ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition
要素はオプションです。イコールや未満などの条件演算子を使用して条件式を作成することで、ポリシーの条件とリクエスト内の値を一致させることができます。
1 つのステートメントに複数の Condition
要素を指定する場合、または 1 つの Condition
要素に複数のキーを指定する場合、AWS では AND
論理演算子を使用してそれらを評価します。単一の条件キーに複数の値を指定する場合、AWS では OR
論理演算子を使用して条件を評価します。ステートメントの許可が付与される前にすべての条件が満たされる必要があります。
条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる許可を付与することができます。詳細については、IAM ユーザーガイドの「IAM ポリシーの要素: 変数およびタグ」を参照してください。
AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」を参照してください。
Amazon EC2 Auto Scaling が次の条件キーをサポートすることで、サポートしているアクションへのアクセスを制御でき、Auto Scaling グループの設定を強制することができます。
-
autoscaling:InstanceTypes
-
autoscaling:LaunchConfigurationName
-
autoscaling:LaunchTemplateVersionSpecified
-
autoscaling:LoadBalancerNames
-
autoscaling:MaxSize
-
autoscaling:MinSize
-
autoscaling:ResourceTag/
key-name
:tag-value
-
autoscaling:TargetGroupARNs
-
autoscaling:VPCZoneIdentifiers
次の条件キーは、起動構成リクエストの作成に固有のものです。
-
autoscaling:ImageId
-
autoscaling:InstanceType
-
autoscaling:MetadataHttpEndpoint
-
autoscaling:MetadataHttpPutResponseHopLimit
-
autoscaling:MetadataHttpTokens
-
autoscaling:SpotPrice
Amazon EC2 Auto Scaling は、リクエスト内のタグまたは Auto Scaling グループに存在するタグに基づいてアクセス許可を定義するために使用できる次のグローバル条件キーもサポートしています。詳しくは、「Auto Scaling グループとインスタンスにタグを付ける」を参照してください。
-
aws:RequestTag/
key-name
:tag-value
-
aws:ResourceTag/
key-name
:tag-value
-
aws:TagKeys:
[
tag-key
, ...]
条件キーを使用できる Amazon EC2 Auto Scaling API アクションについて理解するには、「サービス認証リファレンス」の「Amazon EC2 Auto Scaling で定義されるアクション」を参照してください。Amazon EC2 Auto Scaling 条件キーに関する詳細については、「Amazon EC2 Auto Scaling の条件キー」を参照してください。
注記
条件キーを使用して、サポートしているアクションへのアクセスを制御し、Auto Scaling グループの設定を強制する IAM ポリシーの例については、次のリソースを参照してください。
-
起動テンプレートとバージョン番号を要求する — この例では、Auto Scaling グループを作成または更新するときに、起動テンプレートと起動テンプレートのバージョン番号を指定する必要があります。
-
作成できる Auto Scaling グループのサイズを制御する — この例では、特定のタグがついた Auto Scaling グループを作成または更新するときに、
MinSize
とMaxSize
プロパティに指定できる値に制約を課しています。 -
削除できるスケーリングポリシーを制御する — この例では、特定のタグがついていない Auto Scaling グループのみ、スケーリングポリシーの削除を許可するよう強制しています。
Amazon EC2 Auto Scaling の ACL
ACL のサポート |
いいえ |
アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。
Amazon EC2 Auto Scaling による ABAC
ABAC (ポリシー内のタグ) のサポート |
部分的 |
属性ベースのアクセスコントロール (ABAC) は、属性に基づいてアクセス許可を定義する認可戦略です。AWS では、属性はタグと呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール)、および多数の AWS リソースにアタッチできます。エンティティとリソースのタグ付けは、ABAC の最初のステップです。その後、プリンシパルのタグがアクセスしようとしているリソースのタグと一致した場合に操作を許可するように ABAC ポリシーをします。
ABAC は、急速に成長している環境でポリシー管理が面倒な状況に役立ちます。
タグに基づいてアクセスを管理するには、aws:ResourceTag/
、key-name
aws:RequestTag/
、または key-name
aws:TagKeys
の条件キーを使用して、ポリシーの 条件要素 でタグ情報を提供します。
サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値ははいです。サービスが一部のリソースタイプに対してのみ 3 つの条件キーすべてをサポートする場合、値は部分的です。
ABAC の詳細については、IAM ユーザーガイドの「ABAC とは?」を参照してください。ABAC をセットアップするステップを説明するチュートリアルについては、「IAM ユーザーガイド」の「属性に基づくアクセスコントロール (ABAC) を使用する」を参照してください。
ABAC はタグをサポートするリソースでは可能ですが、すべてのリソースがタグをサポートしているわけではありません。起動設定とスケーリングポリシーはタグをサポートしていませんが、Auto Scaling グループはタグをサポートしています。
詳細については、「Auto Scaling グループとインスタンスにタグを付ける」を参照してください。
Amazon EC2 Auto Scaling での一時認証情報の使用
一時認証情報のサポート |
はい |
AWS のサービス には、一時認証情報を使用してサインインしても機能しないものがあります。一時的な認証情報を利用できる AWS のサービス を含めた詳細情報については、IAM ユーザーガイドの「IAM と連携する AWS のサービス」を参照してください。
ユーザー名とパスワード以外の方法で AWS Management Console にサインインする場合は、一時認証情報を使用していることになります。例えば、会社の Single Sign-On (SSO) リンクを使用して AWS にアクセスすると、そのプロセスは自動的に一時認証情報を作成します。また、ユーザーとしてコンソールにサインインしてからロールを切り替える場合も、一時認証情報が自動的に作成されます。ロールの切り替えに関する詳細については、IAM ユーザーガイドの「ロールへの切り替え (コンソール)」を参照してください。
一時認証情報は、AWS CLI または AWS API を使用して手動で作成できます。作成後、一時認証情報を使用して AWS にアクセスできるようになります。AWS は、長期的なアクセスキーを使用する代わりに、一時認証情報を動的に生成することをお勧めします。詳細については、「IAM の一時的セキュリティ認証情報」を参照してください。
Amazon EC2 Auto Scaling のサービスロール
サービスロールに対するサポート |
はい |
サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロール です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービス にアクセス許可を委任するロールの作成」を参照してください。
Amazon SNS トピックまたは Amazon SQS キューを通知するライフサイクルフックを作成する場合は、ロールを指定して、Amazon EC2 Auto Scaling がユーザーに代わって Amazon SNS または Amazon SQS にアクセスすることを許可する必要があります。IAM コンソールを使用して、ライフサイクルフックのサービスロールを設定します。コンソールは、マネージドポリシーを使用して十分なアクセス許可セットを持つロールを作成するのに役立ちます。詳細については、Amazon SNS を使用した通知の受信 および Amazon SQS を使用した通知の受信 を参照してください。
オプションで、Auto Scaling グループを作成するときに、サービスロールを渡して、Amazon EC2 インスタンスがユーザーに代わって他の AWS のサービス にアクセスすることを許可できます。Amazon EC2 インスタンスのサービスロール (起動テンプレート用または起動設定用の Amazon EC2 インスタンスプロファイル) は、インスタンス起動時に Auto Scaling グループ内のすべての EC2 インスタンスに割り当てられる特殊なサービスロールです。IAM コンソールと AWS CLI を使用して、このサービスロールを作成または編集できます。詳しくは、「Amazon EC2 インスタンスで実行中のアプリケーション用の IAM ロール」を参照してください。
警告
サービスロールの許可を変更すると、Amazon EC2 Auto Scaling の機能を損なうおそれがあります。Amazon EC2 Auto Scaling が指示する場合以外はサービスロールを編集しないでください。
Amazon EC2 Auto Scaling のサービスにリンクされたロール
サービスにリンクされたロールのサポート |
はい |
サービスリンクロールは、AWS のサービス にリンクされているサービスロールの一種です。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールの許可を表示できますが、編集することはできません。
Amazon EC2 Auto Scaling でのサービスにリンクされたロールの作成または管理の詳細については、「Amazon EC2 Auto Scaling のサービスにリンクされたロール」を参照してください。