EC2 シリアルコンソールへのアクセスを設定する
シリアルコンソールへのアクセスを設定するにはアカウントレベルでシリアルコンソールへのアクセスを許可し、ユーザーにアクセス権を付与するように IAM ポリシーを設定する必要があります。Linux インスタンスではユーザーがトラブルシューティングでシリアルコンソールを使用できるように、すべてのインスタンスでパスワードベースのユーザーの設定もする必要があります。
開始する前に、前提条件を必ず確認してください。
内容
EC2 シリアルコンソールへのアクセスのレベル
デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。詳細については「EC2 シリアルコンソールへのアカウントアクセスを管理する」を参照してください。
サービスコントロールポリシー (SCP) を使用して、組織内でシリアルコンソールへのアクセスを許可できます。その後、IAM ポリシーを使用してアクセスをコントロールすることで、ユーザーレベルできめ細かいアクセスコントロールを行うことができます。SCP ポリシーと IAM ポリシーを組み合わせて使用することで、シリアルコンソールに対するさまざまなレベルのアクセス制御が可能になります。
- 組織レベル
-
サービスコントロールポリシー (SCP) を使用して、組織内のメンバーアカウントのためにシリアルコンソールへのアクセスを許可できます。SCP の詳細についてはAWS Organizations ユーザーガイド の「サービスコントロールポリシー」を参照してください。
- インスタンスレベル
-
IAM PrincipalTag および ResourceTag 構造を使用し、ID でインスタンスを指定することで、シリアルコンソールのアクセスポリシーを設定できます。詳細については「EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する」を参照してください。
- ユーザーレベル
-
特定のインスタンスのシリアルコンソールサービスに SSH パブリックキーをプッシュするためのアクセス権限を指定ユーザーに許可または拒否するように IAM ポリシーを設定することで、ユーザーレベルでアクセスを設定できます。詳細については「EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する」を参照してください。
- OS レベル (Linux インスタンスのみ)
-
ユーザーパスワードはゲスト OS レベルで設定できます。これにより、一部のユースケースのためにシリアルコンソールにアクセス権を付与します。ただし、ログをモニタリングするにはパスワードベースのユーザーは必要ありません。詳細については「Linux インスタンスで OS ユーザーパスワードを設定する」を参照してください。
EC2 シリアルコンソールへのアカウントアクセスを管理する
デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。
注記
この設定はアカウントレベルで直接、または宣言ポリシーを使用して設定されます。シリアルコンソールへのアクセスを許可する各 AWS リージョン で設定する必要があります。宣言型ポリシーを使用すると、複数のリージョンと複数のアカウントで同時に設定を適用できます。宣言ポリシーが使用されている場合、アカウント内で直接設定を変更することはできません。このトピックでは、アカウント内で設定を直接設定する方法について説明します。宣言ポリシーの使用の詳細についてはAWS Organizations「 ユーザーガイド」の「宣言ポリシー」を参照してください。
目次
ユーザーにアカウントアクセスを管理するための許可を付与する
ユーザーが EC2 シリアルコンソールへのアカウントアクセスを管理できるようにするには必要な IAM 許可をユーザーに付与する必要があります。
次のポリシーはアカウントステータスを表示するためのアクセス権限、ならびに EC2 シリアルコンソールへのアカウントアクセスを許可および禁止するためのアクセス権限を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:GetSerialConsoleAccessStatus", "ec2:EnableSerialConsoleAccess", "ec2:DisableSerialConsoleAccess" ], "Resource": "*" } ] }
詳細についてはIAM ユーザーガイド の「IAM ポリシーの作成」を参照してください。
シリアルコンソールへのアカウントアクセスのステータスを表示する
シリアルコンソールへのアカウントアクセスを許可する
シリアルコンソールへのアカウントアクセスを拒否する
EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する
デフォルトではユーザーはシリアルコンソールにアクセスできません。組織は IAM ポリシーを設定して、ユーザーに必要なアクセスを許可する必要があります。詳細についてはIAM ユーザーガイド の「IAM ポリシーの作成」を参照してください。
シリアルコンソールのアクセスについて、ec2-instance-connect:SendSerialConsoleSSHPublicKey
アクションを含む JSON ポリシードキュメントを作成します。このアクションはシリアルコンソールセッションを開始するシリアルコンソールサービスにパブリックキーをプッシュするための許可をユーザーに付与します。特定の EC2 インスタンスへのアクセスを制限することをお勧めします。それ以外の場合、この許可を持つすべてのユーザーはすべての EC2 インスタンスのシリアルコンソールに接続できます。
シリアルコンソールへのアクセスを明示的に許可する
デフォルトでは誰もシリアルコンソールにアクセスできません。シリアルコンソールへのアクセスを許可するには明示的にアクセスを許可するようにポリシーを設定する必要があります。特定のインスタンスへのアクセスを制限するポリシーを設定することをお勧めします。
次のポリシーはインスタンス ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを許可します。
DescribeInstances
、DescribeInstanceTypes
、GetSerialConsoleAccessStatus
アクションはリソースレベルの権限をサポートしていないため、これらのアクションには *
(アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "AllowinstanceBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:
region
:account-id
:instance/i-0598c7d356eba48d7
" } ] }
シリアルコンソールへのアクセスを明示的に拒否する
次の IAM ポリシーは*
(アスタリスク) で示されるすべてのインスタンスのシリアルコンソールへのアクセスを許可し、ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを明示的に拒否します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "DenySerialConsoleAccess", "Effect": "Deny", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:
region
:account-id
:instance/i-0598c7d356eba48d7
" } ] }
リソースタグを使用してシリアルコンソールへのアクセスを制御する
リソースタグを使用して、インスタンスのシリアルコンソールへのアクセスを制御できます。
属性ベースアクセス制御はユーザーおよび AWS リソースにアタッチできるタグに基づいてアクセス権限を定義する認可戦略です。例えば、次のポリシーはインスタンスのリソースタグとプリンシパルのタグがタグキーについて同じ SerialConsole
の値を持っている場合に限り、ユーザーがインスタンスのシリアルコンソール接続を開始することを許可します。
AWS リソースへのアクセスを制御するタグの使用の詳細についてはIAM ユーザーガイドのAWS リソースへのアクセス制御を参照してください。
DescribeInstances
、DescribeInstanceTypes
、GetSerialConsoleAccessStatus
アクションはリソースレベルの権限をサポートしていないため、これらのアクションには *
(アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "AllowTagBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:
region
:account-id
:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/SerialConsole
": "${aws:PrincipalTag/SerialConsole
}" } } } ] }
Linux インスタンスで OS ユーザーパスワードを設定する
注記
このセクションは Linux インスタンスにのみ当てはまります。
パスワードなしでシリアルコンソールに接続できます。ただし、Linux インスタンスのトラブルシューティングでシリアルコンソールを使用するにはインスタンスにパスワードベースの OS ユーザーがある必要があります。
root ユーザーを含む任意の OS ユーザーに対し、パスワードを設定できます。root ユーザーはすべてのファイルを変更できますが、それ以外の OS ユーザーは権限が制限されていることに注意してください。
シリアルコンソールを使用するすべてのインスタンスについて、ユーザーパスワードを設定する必要があります。これはインスタンスごとに 1 回のみ必要なセットアップです。
注記
AWS が提供する AMI はデフォルトではパスワードベースのユーザーありで設定されてはいないため、以下の手順は AWS が提供する Linux AMI を使用してインスタンスを起動した場合にのみ当てはまります。既にルートユーザーパスワードが設定されている AMI を使用してインスタンスを起動した場合はこれらの手順を省略できます。
Linux インスタンスで OS ユーザーパスワードを設定するには
-
インスタンスに接続します。EC2 シリアルコンソールの接続方法を除き、インスタンスへの接続には任意の方法を使用できます。
-
ユーザーのパスワードを設定するにはpasswd コマンドを使用します。次の例ではユーザーは
root
です。[ec2-user ~]$
sudo passwd root出力例を次に示します。
Changing password for user root. New password:
-
New password
のプロンプトに従って、新しいパスワードを入力してください。 -
プロンプトに従って、パスワードを再入力してください。