IAM への EC2 Instance Connect のアクセス許可の付与
EC2 Instance Connect を使用してインスタンスに接続するには、以下のアクションと条件に対するアクセス許可をユーザーに付与する IAM ポリシーを作成する必要があります。
-
ec2-instance-connect:SendSSHPublicKey
アクション – パブリックキーをインスタンスにプッシュするためのアクセス許可を付与します。 -
ec2:osuser
条件 – パブリックキーをインスタンスにプッシュできる OS ユーザーの名前を指定します。インスタンスの起動に使用した AMI のデフォルトのユーザー名を使用します。デフォルトのユーザー名は AL2023 と Amazon Linux 2 ではec2-user
、Ubuntu ではubuntu
です。 -
ec2:DescribeInstances
アクション — ラッパーがこのアクションを呼び出すため、EC2 コンソールを使用するときに必要です。ユーザーには、別のポリシーからこのアクションを呼び出すためのアクセス許可が既に付与されている場合があります。 -
ec2:DescribeVpcs
アクション – IPv6 アドレスに接続するときに必要です。
特定の EC2 インスタンスへのアクセスを制限することを検討してください。それ以外の場合、ec2-instance-connect:SendSSHPublicKey
アクションのアクセス許可を持つすべての IAM プリンシパルは、すべての EC2 インスタンスに接続できます。リソース ARN を指定するか、リソースタグを条件キーとして使用して、アクセスを制限することができます。
詳細については、「Amazon EC2 Instance Connect のアクション、リソース、および条件キー 」を参照してください。
IAM ポリシーの作成の詳細については、「IAM ユーザーガイド」の「IAM ポリシーの作成」を参照してください。
ユーザーに特定のインスタンスへの接続を許可
次の IAM ポリシーは、リソース ARN で識別される特定のインスタンスに接続するアクセス許可を付与します。
次の IAM ポリシーの例では、以下のアクションと条件が指定されています。
-
ec2-instance-connect:SendSSHPublicKey
アクションは、リソース ARN で指定された 2 つのインスタンスに接続するためのアクセス許可をユーザーに付与します。すべての EC2 インスタンスに接続するためのアクセス許可をユーザーに付与するには、リソース ARN を*
(ワイルドカード) に置き換えます。 -
ec2:osuser
条件により、接続時にami-username
が指定されている場合にのみ、インスタンスに接続するためのアクセス許可が付与されます。 -
ec2:DescribeInstances
アクションは、コンソールを使用してインスタンスに接続するユーザーにアクセス許可を付与するように指定されます。ユーザーが SSH クライアントのみを使用してインスタンスに接続する場合は、ec2:DescribeInstances
を省略できます。ec2:Describe*
API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、Resource
の要素には、*
(ワイルドカード) が必要です。 -
ec2:DescribeVpcs
アクションは、IPv6 アドレスでインスタンスに接続するために、コンソールを使用してユーザーにアクセス許可を付与するように指定されます。ユーザーがパブリック IPv4 アドレスのみを使用する場合は、ec2:DescribeVpcs
を省略できます。ec2:Describe*
API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、Resource
の要素には、*
(ワイルドカード) が必要です。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/i-1234567890abcdef0
", "arn:aws:ec2:region
:account-id
:instance/i-0598c7d356eba48d7
" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username
" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVpcs" ], "Resource": "*" } ] }
ユーザーに特定のタグを持つインスタンスへの接続を許可
属性ベースのアクセス制御 (ABAC) は、ユーザーおよび AWS リソースにアタッチできるタグに基づいてアクセス許可を定義する認可戦略です。リソースタグを使用してインスタンスへのアクセスを制御することもできます。AWS リソースへのアクセスを制御するタグの使用の詳細については、IAM ユーザーガイドの「AWS リソースへのアクセス制御」を参照してください。
次の IAM ポリシーの例では、ec2-instance-connect:SendSSHPublicKey
アクションは、インスタンスに key=tag-key
と value=tag-value
が付いたリソースタグが割り当てられていることを条件に、(リソース ARN の *
(ワイルドカード) で示される) 任意のインスタンスに接続するためのアクセス許可をユーザーに付与します。
ec2:DescribeInstances
アクションは、コンソールを使用してインスタンスに接続するユーザーにアクセス許可を付与するように指定されます。ユーザーが SSH クライアントのみを使用してインスタンスに接続する場合は、ec2:DescribeInstances
を省略できます。ec2:Describe*
API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、Resource
の要素には、*
(ワイルドカード) が必要です。
ec2:DescribeVpcs
アクションは、IPv6 アドレスでインスタンスに接続するために、コンソールを使用してユーザーにアクセス許可を付与するように指定されます。ユーザーがパブリック IPv4 アドレスのみを使用する場合は、ec2:DescribeVpcs
を省略できます。ec2:Describe*
API アクションはリソースレベルのアクセス許可をサポートしないことに注意してください。したがって、Resource
の要素には、*
(ワイルドカード) が必要です。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:
region
:account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/tag-key
": "tag-value
" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeVpcs" ], "Resource": "*" } ] }