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 シリアルコンソールへのアカウントアクセスを管理する
デフォルトでは、アカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。
トピック
ユーザーにアカウントアクセスを管理するための許可を付与する
ユーザーが EC2 シリアルコンソールへのアカウントアクセスを管理できるようにするには、必要な IAM 許可をユーザーに付与する必要があります。
次のポリシーは、アカウントステータスを表示するためのアクセス権限、ならびに EC2 シリアルコンソールへのアカウントアクセスを許可および禁止するためのアクセス権限を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:GetSerialConsoleAccessStatus", "ec2:EnableSerialConsoleAccess", "ec2:DisableSerialConsoleAccess" ], "Resource": "*" } ] }
詳細については、IAM ユーザーガイド の「IAM ポリシーの作成」を参照してください。
シリアルコンソールへのアカウントアクセスのステータスを表示する
シリアルコンソール (コンソール) へのアカウントアクセスのステータスを表示するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
左側ナビゲーションペインで、[EC2 ダッシュボード] をクリックします。
-
[Account attributes] (アカウントの属性) から、[EC2 Serial Console] (EC2 シリアルコンソール) を選択します。
[EC2 Serial Console access] (EC2 シリアルコンソールアクセス) フィールドには、アカウントアクセスが [Allowed] (許可) されているか、[Prevented] (禁止) されているかが示されます。
次のスクリーンショットは、アカウントが EC2 シリアルコンソールを使用できないことを示しています。
シリアルコンソールへのアカウントアクセスのステータスを表示するには (AWS CLI)
シリアルコンソールへのアカウントアクセスのステータスを表示するには、get-serial-console-access-status コマンドを使用します。
aws ec2 get-serial-console-access-status --region
us-east-1
次の出力では、true
は、アカウントがシリアルコンソールへのアクセスを許可されていることを示しています。
{ "SerialConsoleAccessEnabled": true }
シリアルコンソールへのアカウントアクセスを許可する
シリアルコンソールへのアカウントアクセスを許可するには (コンソール)
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
左側ナビゲーションペインで、[EC2 ダッシュボード] をクリックします。
-
[Account attributes] (アカウントの属性) から、[EC2 Serial Console] (EC2 シリアルコンソール) を選択します。
-
[管理] をクリックします。
-
アカウント内のすべてのインスタンスの EC2 シリアルコンソールへのアクセスを許可するには、[Allow] (許可) チェックボックスをオンにします。
-
[更新] を選択します。
シリアルコンソールへのアカウントアクセスを許可するには (AWS CLI)
enable-serial-console-access コマンドを使用して、シリアルコンソールへのアカウントアクセスを許可します。
aws ec2 enable-serial-console-access --region
us-east-1
次の出力では、true
は、アカウントがシリアルコンソールへのアクセスを許可されていることを示しています。
{ "SerialConsoleAccessEnabled": true }
シリアルコンソールへのアカウントアクセスを拒否する
シリアルコンソールへのアカウントアクセスを拒否するには (コンソール)
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
左側ナビゲーションペインで、[EC2 ダッシュボード] をクリックします。
-
[Account attributes] (アカウントの属性) から、[EC2 Serial Console] (EC2 シリアルコンソール) を選択します。
-
[管理] をクリックします。
-
アカウント内のすべてのインスタンスの EC2 シリアルコンソールへのアクセスを禁止するには、[Allow] (許可) チェックボックスをオフにします。
-
[更新] を選択します。
シリアルコンソールへのアカウントアクセスを拒否するには (AWS CLI)
disable-serial-console-access コマンドを使用して、シリアルコンソールへのアカウントアクセスを禁止します。
aws ec2 disable-serial-console-access --region
us-east-1
次の出力では、false
は、アカウントがシリアルコンソールへのアクセスを拒否されていることを示しています。
{ "SerialConsoleAccessEnabled": false }
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
のプロンプトに従って、新しいパスワードを入力します。 -
プロンプトに従って、パスワードを再入力します。