アマゾン EC2 起動テンプレートに必要な IAM アクセス許可
IAM アクセス許可を使用して、ユーザーが起動テンプレートまたは起動テンプレートのバージョンをリスト、表示、作成、または削除できるかどうかを制御できます。
重要
リソースレベルのアクセス許可を使用して、ユーザーが起動テンプレートまたは起動テンプレートのバージョンを作成するときに起動テンプレートで指定できるリソースを制限することはできません。したがって、信頼できる管理者のみに起動テンプレートと起動テンプレートのバージョンを作成するアクセス許可が与えられるようにしてください。
起動テンプレートを使用するユーザーには、起動テンプレートで指定されたリソースの作成とアクセスに必要なアクセス許可を付与しなければなりません。以下に例を示します。
-
共有のプライベート アマゾン マシンイメージ (AMI) からインスタンスを起動するには、ユーザーに AMI の起動許可が必要です。
-
既存のスナップショットからタグ付きの EBS ボリュームを作成するには、ユーザーはスナップショットへの読み取りのアクセス許可と、ボリュームを作成してタグ付けを行うためのアクセス許可が必要です。
内容
ec2:CreateLaunchTemplate
コンソールで、または API を使用して起動テンプレートを作成するには、プリンシパルが IAM ポリシーで ec2:CreateLaunchTemplate
アクセス許可を持っている必要があります。可能な限り、タグを使用してアカウントで起動テンプレートへのアクセスを制御できるようにします。
例えば、次の IAM ポリシーステートメントは、テンプレートが指定されたタグ (
=purpose
) を使用している場合にのみ、プリンシパルに起動テンプレートを作成する許可を付与します。testing
{ "Sid": "IAMPolicyForCreatingTaggedLaunchTemplates", "Action": "ec2:CreateLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/
purpose
": "testing
" } } }
起動テンプレートを作成するプリンシパルには、次のような関連するアクセス許可が必要な場合があります。
-
ec2:CreateTags —
CreateLaunchTemplate
操作時に起動テンプレートにタグを追加するには、CreateLaunchTemplate
の呼び出し元が IAM ポリシーでec2:CreateTags
アクセス許可を持っている必要があります。 -
ec2:RunInstances – 作成した起動テンプレートから EC2 インスタンスを起動するには、プリンシパルは IAM ポリシーで
ec2:RunInstances
アクセス許可も持っている必要があります。
タグを適用するリソース作成アクションでは、ユーザーが ec2:CreateTags
アクセス許可を持っている必要があります。次の IAM ポリシーステートメントは、ec2:CreateAction
条件キーを使用して、ユーザーが CreateLaunchTemplate
のコンテキストでのみタグを使用できるようにしています。ユーザーは、既存の起動テンプレートにも他のリソースにもタグ付けできません。詳細については、「アマゾン EC2 リソース作成時にタグ付けするアクセス許可の付与」を参照してください。
{ "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation", "Action": "ec2:CreateTags", "Effect": "Allow", "Resource": "arn:aws:ec2:
region
:account-id
:launch-template/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateLaunchTemplate" } } }
起動テンプレートを作成した IAM ユーザーに、作成した起動テンプレートを使用するアクセス許可が自動で付与されることはありません。他のプリンシパルと同様に、起動テンプレートの作成者は、IAM ポリシーを使用してアクセス許可を取得する必要があります。IAM ユーザーが起動テンプレートから EC2 インスタンスを起動する場合は、ec2:RunInstances
アクセス許可が必要です。このアクセス許可を付与するときに、ユーザーが特定のタグまたは特定の ID を含む起動テンプレートのみを使用できるように指定できます。また、RunInstances
呼び出しに対するリソースレベルのアクセス許可を指定することで、起動テンプレートを使用するすべてのユーザーがインスタンスの起動時に参照および使用できる AMI やその他のリソースを制御できます。エンドポイントポリシーの例については、起動テンプレートを参照してください。
ec2:DescribeLaunchTemplates
アカウントの起動テンプレートをリストおよび表示するには、プリンシパルが IAM ポリシーで ec2:DescribeLaunchTemplates
アクセス許可を持っている必要があります。Describe
アクションはリソースレベルのアクセス許可をサポートしていないため、条件なしで指定する必要があります。また、ポリシーのリソース要素の値は "*"
である必要があります。
例えば、次の IAM ポリシーステートメントでは、アカウントのすべての起動テンプレートをリストおよび表示する許可をプリンシパルに付与します。
{ "Sid": "IAMPolicyForDescribingLaunchTemplates", "Action": "ec2:DescribeLaunchTemplates", "Effect": "Allow", "Resource": "*" }
ec2:DescribeLaunchTemplateVersions
起動テンプレートをリストおよび表示するプリンシパルは、起動テンプレートを構成する属性セット全体を取得するための ec2:DescribeLaunchTemplateVersions
アクセス許可も持つようにしてください。
アカウントの起動テンプレートのバージョンをリストおよび表示するには、プリンシパルが IAM ポリシーで ec2:DescribeLaunchTemplateVersions
アクセス許可を持っている必要があります。Describe
アクションはリソースレベルのアクセス許可をサポートしていないため、条件なしで指定する必要があります。また、ポリシーのリソース要素の値は "*"
である必要があります。
例えば、次の IAM ポリシーステートメントでは、アカウントにおけるすべての起動テンプレートのバージョンをリストおよび表示する許可をプリンシパルに付与します。
{ "Sid": "IAMPolicyForDescribingLaunchTemplateVersions", "Effect": "Allow", "Action": "ec2:DescribeLaunchTemplateVersions", "Resource": "*" }
ec2:DeleteLaunchTemplate
重要
プリンシパルにリソースを削除する許可を与えるときは、注意する必要があります。起動テンプレートを削除すると、起動テンプレートに依存する AWS リソースに障害が発生する可能性があります。
起動テンプレートを削除するには、プリンシパルが IAM ポリシーで ec2:DeleteLaunchTemplate
アクセス許可を持っている必要があります。可能な限り、タグベースの条件キーを使用してアクセス許可を制限します。
例えば、次の IAM ポリシーステートメントは、テンプレートが指定されたタグ (
=purpose
) がある場合にのみ、プリンシパルに起動テンプレートを削除する許可を付与します。testing
{ "Sid": "IAMPolicyForDeletingLaunchTemplates", "Action": "ec2:DeleteLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/
purpose
": "testing
" } } }
または、ARN を使用して IAM ポリシーが適用される起動テンプレートを指定することもできます。
起動テンプレートには次の ARN が含まれます。
"Resource": "arn:aws:ec2:
region
:account-id
:launch-template/lt-09477bcd97b0d310e
"
複数の ARN を一覧で囲んで指定することも、Condition
要素を使用せず Resource
値に "*"
を指定して、プリンシパルがアカウントの任意の起動テンプレートを削除できるようにすることもできます。
バージョニングアクセス許可の制御
信頼できる管理者には、以下の例のように IAM ポリシーを使用して、起動テンプレートのバージョンを作成および削除したり、起動テンプレートのデフォルトバージョンを変更したりするためのアクセス許可を付与できます。
重要
起動テンプレートのバージョンを作成したり、起動テンプレートを変更したりするアクセス許可をプリンシパルに付与する場合は、注意が必要です。
-
起動テンプレートのバージョンを作成すると、アマゾン EC2 がユーザーに代わって
Latest
バージョンでインスタンスを起動できるようにするすべての AWS リソースに影響します。 -
起動テンプレートを変更すると、どのバージョンが
Default
になるかを変更できます。したがって、アマゾン EC2 がこの変更済みバージョンを使用してユーザーに代わってインスタンスを起動できるようにするすべての AWS リソースに影響します。
また、EC2 フリートやスポットフリートなど、Latest
または Default
の起動テンプレートバージョンとやり取りする AWS リソースの取り扱い方にも注意が必要です。「Latest
」または「Default
」に別の起動テンプレートバージョンが使用されている場合、アマゾン EC2 は、フリートの目標容量を満たすために新しいインスタンスを起動する際に、完了すべきアクションのユーザーアクセス許可を再確認することはありません。これは、AWS リソースとユーザーのやり取りがないためです。CreateLaunchTemplateVersion
API と ModifyLaunchTemplate
API を呼び出すアクセス許可をユーザーに付与すると、インスタンスプロファイル (IAM ロールのコンテナ) を含む別の起動テンプレートバージョンをフリートに指定する場合、ユーザーに iam:PassRole
アクセス許可も効果的に付与できます。つまり、場合によっては iam:PassRole
アクセス許可がなくても、起動テンプレートを更新して IAM ロールをインスタンスに渡すことができます。このリスクは、起動テンプレートバージョンを作成および管理できるユーザーにアクセス許可を付与する際に注意することで管理できます。
ec2:CreateLaunchTemplateVersion
起動テンプレートの新しいバージョンを作成するには、プリンシパルが IAM ポリシーで起動テンプレートに対する ec2:CreateLaunchTemplateVersion
アクセス許可を持っている必要があります。
例えば、次の IAM ポリシーステートメントは、バージョンが指定されたタグ (
=environment
) を使用している場合にのみ、プリンシパルに起動テンプレートのバージョンを作成する許可を付与します。あるいは、1 つまたは複数の起動テンプレートの ARN を指定することも、production
Condition
要素を使用せず Resource
値に "*"
を指定して、プリンシパルがアカウントにおける任意の起動テンプレートのバージョンを作成できるようにすることもできます。
{ "Sid": "IAMPolicyForCreatingLaunchTemplateVersions", "Action": "ec2:CreateLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/
environment
": "production
" } } }
ec2:DeleteLaunchTemplateVersion
重要
プリンシパルにリソースを削除する権限を与えるときは、いつものように注意する必要があります。起動テンプレートのバージョンを削除すると、起動テンプレートのバージョンに依存する AWS リソースに障害が発生する可能性があります。
起動テンプレートのバージョンを削除するには、プリンシパルが IAM ポリシーで起動テンプレートに対する ec2:DeleteLaunchTemplateVersion
アクセス許可を持っている必要があります。
例えば、次の IAM ポリシーステートメントは、バージョンが指定されたタグ (
=environment
) を使用している場合にのみ、プリンシパルに起動テンプレートのバージョンを削除する許可を付与します。あるいは、1 つまたは複数の起動テンプレートの ARN を指定することも、production
Condition
要素を使用せず Resource
値に "*"
を指定して、プリンシパルがアカウントにおける任意の起動テンプレートのバージョンを削除できるようにすることもできます。
{ "Sid": "IAMPolicyForDeletingLaunchTemplateVersions", "Action": "ec2:DeleteLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/
environment
": "production
" } } }
ec2:ModifyLaunchTemplate
起動テンプレートに関連付けられている Default
バージョンを変更するには、プリンシパルが IAM ポリシーで起動テンプレートに対する ec2:ModifyLaunchTemplate
アクセス許可を持っている必要があります。
例えば、次の IAM ポリシーステートメントは、起動テンプレートが指定されたタグ (
=environment
) を使用している場合にのみ、プリンシパルに起動テンプレートを変更する許可を付与します。あるいは、1 つまたは複数の起動テンプレートの ARN を指定することも、production
Condition
要素を使用せず Resource
値に "*"
を指定して、プリンシパルがアカウントにおける任意の起動テンプレートのバージョンを変更できるようにすることもできます。
{ "Sid": "IAMPolicyForModifyingLaunchTemplates", "Action": "ec2:ModifyLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/
environment
": "production
" } } }
起動テンプレートのタグへのアクセスを制御する
リソースが起動テンプレートの場合、条件キーを使用してタグ付け許可を制限できます。例えば、次の IAM ポリシーでは、指定されたアカウントとリージョンの起動テンプレートから
キーを持つタグのみを削除できます。temporary
{ "Sid": "IAMPolicyForDeletingTagsOnLaunchTemplates", "Action": "ec2:DeleteTags", "Effect": "Allow", "Resource": "arn:aws:ec2:
region
:account-id
:launch-template/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["temporary
"] } } }
アマゾン EC2 リソースに適用できるタグキーとタグ値を制御するのに使用できる条件キーの詳細については、「特定のタグへのアクセスの制御」を参照してください。