EC2 シリアルコンソールへのアクセスを設定する - Amazon Elastic Compute Cloud

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 ポリシーの作成」を参照してください。

シリアルコンソールへのアカウントアクセスのステータスを表示する

シリアルコンソール のコンソール) へのアカウントアクセスのステータスを表示するには
  1. Amazon EC2 コンソール のhttps://console.aws.amazon.com/ec2/ を開いてください。

  2. 左側ナビゲーションペインで、[EC2 ダッシュボード] をクリックしてください。

  3. [Account attributes] (アカウントの属性) から、[EC2 Serial Console] (EC2 シリアルコンソール) を選択してください。

    [EC2 Serial Console access] (EC2 シリアルコンソールアクセス) フィールドにはアカウントアクセスが [Allowed] (許可) されているか、[Prevented] (禁止) されているかが示されます。

    次のスクリーンショットはアカウントが EC2 シリアルコンソールを使用できないことを示しています。

    EC2 シリアルコンソールへのアクセスは禁止されています。
シリアルコンソールへのアカウントアクセスのステータスを表示するには (AWS CLI)

シリアルコンソールへのアカウントアクセスのステータスを表示するにはget-serial-console-access-status コマンドを使用します。

aws ec2 get-serial-console-access-status --region us-east-1

次の出力ではtrue はアカウントがシリアルコンソールへのアクセスを許可されていることを示しています。

ManagedBy フィールドは設定を設定したエンティティを示します。この例では、 は 設定がアカウントで直接設定されたaccountことを示します。declarative-policyという値は、その設定が宣言的ポリシーによって構成されたことを意味する。詳細については「AWS OrganizationsIAM ユーザーガイド」の「 マネージドポリシー」を参照してください。

{ "SerialConsoleAccessEnabled": true, "ManagedBy": "account" }

シリアルコンソールへのアカウントアクセスを許可する

シリアルコンソールへのアカウントアクセスを許可するには (コンソール)
  1. Amazon EC2 コンソール のhttps://console.aws.amazon.com/ec2/ を開いてください。

  2. 左側ナビゲーションペインで、[EC2 ダッシュボード] をクリックしてください。

  3. [Account attributes] (アカウントの属性) から、[EC2 Serial Console] (EC2 シリアルコンソール) を選択してください。

  4. [管理] をクリックしてください。

  5. アカウントにあるすべてのインスタンスの EC2 シリアルコンソールにアクセスを許可するには[許可] チェックボックスをオンにします。

  6. [更新] を選択してください。

シリアルコンソールへのアカウントアクセスを許可するには (AWS CLI)

enable-serial-console-access コマンドを使用して、シリアルコンソールへのアカウントアクセスを許可します。

aws ec2 enable-serial-console-access --region us-east-1

次の出力ではtrue はアカウントがシリアルコンソールへのアクセスを許可されていることを示しています。

{ "SerialConsoleAccessEnabled": true }

シリアルコンソールへのアカウントアクセスを拒否する

シリアルコンソールへのアカウントアクセスを拒否するには (コンソール)
  1. Amazon EC2 コンソール のhttps://console.aws.amazon.com/ec2/ を開いてください。

  2. 左側ナビゲーションペインで、[EC2 ダッシュボード] をクリックしてください。

  3. [Account attributes] (アカウントの属性) から、[EC2 Serial Console] (EC2 シリアルコンソール) を選択してください。

  4. [管理] をクリックしてください。

  5. アカウントにあるすべてのインスタンスの EC2 シリアルコンソールへのアクセスを禁止するには、[許可] チェックボックスをオフにします。

  6. [更新] を選択してください。

シリアルコンソールへのアカウントアクセスを拒否するには (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 によって識別される特定のインスタンスのシリアルコンソールへのアクセスを許可します。

DescribeInstancesDescribeInstanceTypesGetSerialConsoleAccessStatus アクションはリソースレベルの権限をサポートしていないため、これらのアクションには * (アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。

{ "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 リソースへのアクセス制御を参照してください。

DescribeInstancesDescribeInstanceTypesGetSerialConsoleAccessStatus アクションはリソースレベルの権限をサポートしていないため、これらのアクションには * (アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。

{ "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 ユーザーパスワードを設定するには
  1. インスタンスに接続します。EC2 シリアルコンソールの接続方法を除き、インスタンスへの接続には任意の方法を使用できます。

  2. ユーザーのパスワードを設定するにはpasswd コマンドを使用します。次の例ではユーザーは root です。

    [ec2-user ~]$ sudo passwd root

    出力例を次に示します。

    Changing password for user root. New password:
  3. New password のプロンプトに従って、新しいパスワードを入力してください。

  4. プロンプトに従って、パスワードを再入力してください。