

# EC2 シリアルコンソールへのアクセスを設定する
<a name="configure-access-to-serial-console"></a>

シリアルコンソールへのアクセスを設定するにはアカウントレベルでシリアルコンソールへのアクセスを許可し、ユーザーにアクセス権を付与するように IAM ポリシーを設定する必要があります。Linux インスタンスではユーザーがトラブルシューティングでシリアルコンソールを使用できるように、すべてのインスタンスでパスワードベースのユーザーの設定もする必要があります。

EC2 シリアルコンソールは、仮想シリアルポート接続を使用してインスタンスとやり取りします。この接続はインスタンス VPC から独立しているため、起動障害やネットワーク設定の問題が発生した場合でも、インスタンスオペレーティングシステムを操作しトラブルシューティングツールを実行することができます。この接続は VPC ネットワークの外部にあるため、EC2 シリアルコンソールは、インスタンスへのトラフィックを承認する際は、インスタンスセキュリティグループまたはサブネットネットワーク ACL を使用しません。

**[開始する前に]**  
[前提条件](ec2-serial-console-prerequisites.md)が満たされていることを確認します。

**Topics**
+ [EC2 シリアルコンソールへのアクセスのレベル](#serial-console-access-levels)
+ [EC2 シリアルコンソールへのアカウントアクセスを管理する](#serial-console-account-access)
+ [EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)
+ [Linux インスタンスで OS ユーザーパスワードを設定する](#set-user-password)

## EC2 シリアルコンソールへのアクセスのレベル
<a name="serial-console-access-levels"></a>

デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。詳細については「[EC2 シリアルコンソールへのアカウントアクセスを管理する](#serial-console-account-access)」を参照してください。

サービスコントロールポリシー (SCP) を使用して、組織内でシリアルコンソールへのアクセスを許可できます。その後、IAM ポリシーを使用してアクセスをコントロールすることで、ユーザーレベルできめ細かいアクセスコントロールを行うことができます。SCP ポリシーと IAM ポリシーを組み合わせて使用することで、シリアルコンソールに対するさまざまなレベルのアクセス制御が可能になります。

**組織レベル**  
サービスコントロールポリシー (SCP) を使用して、組織内のメンバーアカウントのためにシリアルコンソールへのアクセスを許可できます。SCP の詳細については*AWS Organizations ユーザーガイド* の「[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。

**インスタンスレベル**  
IAM PrincipalTag および ResourceTag 構造を使用し、ID でインスタンスを指定することで、シリアルコンソールのアクセスポリシーを設定できます。詳細については「[EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)」を参照してください。

**ユーザーレベル**  
特定のインスタンスのシリアルコンソールサービスに SSH パブリックキーをプッシュするためのアクセス権限を指定ユーザーに許可または拒否するように IAM ポリシーを設定することで、ユーザーレベルでアクセスを設定できます。詳細については「[EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)」を参照してください。

**OS レベル** (Linux インスタンスのみ)  
ユーザーパスワードはゲスト OS レベルで設定できます。これにより、一部のユースケースのためにシリアルコンソールにアクセス権を付与します。ただし、ログをモニタリングするにはパスワードベースのユーザーは必要ありません。詳細については「[Linux インスタンスで OS ユーザーパスワードを設定する](#set-user-password)」を参照してください。

## EC2 シリアルコンソールへのアカウントアクセスを管理する
<a name="serial-console-account-access"></a>

デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。

この設定はアカウントレベルで直接、または宣言ポリシーを使用して設定されます。シリアルコンソールへのアクセスを許可する各 AWS リージョン で設定する必要があります。宣言型ポリシーを使用すると、複数のリージョンと複数のアカウントで同時に設定を適用できます。宣言ポリシーが使用されている場合、アカウント内で直接設定を変更することはできません。このトピックでは、アカウント内で設定を直接設定する方法について説明します。宣言ポリシーの使用の詳細については*AWS Organizations「 ユーザーガイド」*の[「宣言ポリシー」](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)を参照してください。

**Contents**
+ [ユーザーにアカウントアクセスを管理するための許可を付与する](#sc-account-access-permissions)
+ [シリアルコンソールへのアカウントアクセスのステータスを表示する](#sc-view-account-access)
+ [シリアルコンソールへのアカウントアクセスを許可する](#sc-grant-account-access)
+ [シリアルコンソールへのアカウントアクセスを拒否する](#sc-deny-account-access)

### ユーザーにアカウントアクセスを管理するための許可を付与する
<a name="sc-account-access-permissions"></a>

ユーザーが EC2 シリアルコンソールへのアカウントアクセスを管理できるようにするには必要な IAM 許可をユーザーに付与する必要があります。

次のポリシーはアカウントステータスを表示するためのアクセス権限、ならびに EC2 シリアルコンソールへのアカウントアクセスを許可および禁止するためのアクセス権限を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:GetSerialConsoleAccessStatus",
                "ec2:EnableSerialConsoleAccess",
                "ec2:DisableSerialConsoleAccess"
            ],
            "Resource": "*"
        }
    ]
}
```

------

詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

### シリアルコンソールへのアカウントアクセスのステータスを表示する
<a name="sc-view-account-access"></a>

------
#### [ Console ]

**シリアルコンソールにアカウントアクセスを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**EC2 シリアルコンソール**] タブで、[**EC2 シリアルコンソールアクセス**] の値は**許可**または**禁止**のいずれかです。

------
#### [ AWS CLI ]

**シリアルコンソールにアカウントアクセスを表示するには**  
[get-serial-console-access-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-serial-console-access-status.html) コマンドを使用します。

```
aws ec2 get-serial-console-access-status
```

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

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

`ManagedBy` フィールドは、設定を構成したエンティティを示します。指定できる値は `account` (直接設定) または `declarative-policy` です。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

------
#### [ PowerShell ]

**シリアルコンソールにアカウントアクセスを表示するには**  
[Get-EC2SerialConsoleAccessStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SerialConsoleAccessStatus.html) コマンドレットを使用します。

```
Get-EC2SerialConsoleAccessStatus -Select *
```

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

```
ManagedBy SerialConsoleAccessEnabled
--------- --------------------------
account   True
```

`ManagedBy` フィールドは、設定を構成したエンティティを示します。指定できる値は `account` (直接設定) または `declarative-policy` です。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

------

### シリアルコンソールへのアカウントアクセスを許可する
<a name="sc-grant-account-access"></a>

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

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

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

1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**シリアルコンソールへのアカウントアクセスを許可するには**  
[enable-serial-console-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-serial-console-access.html) コマンドを使用します。

```
aws ec2 enable-serial-console-access
```

出力例を次に示します。

```
{
    "SerialConsoleAccessEnabled": true
}
```

------
#### [ PowerShell ]

**シリアルコンソールへのアカウントアクセスを許可するには**  
[Enable-EC2SerialConsoleAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2SerialConsoleAccess.html) コマンドレットを使用します。

```
Enable-EC2SerialConsoleAccess
```

出力例を次に示します。

```
True
```

------

### シリアルコンソールへのアカウントアクセスを拒否する
<a name="sc-deny-account-access"></a>

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

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

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

1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**シリアルコンソールへのアカウントアクセスを拒否するには**  
[disable-serial-console-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-serial-console-access.html) コマンドを使用します。

```
aws ec2 disable-serial-console-access
```

出力例を次に示します。

```
{
    "SerialConsoleAccessEnabled": false
}
```

------
#### [ PowerShell ]

**シリアルコンソールへのアカウントアクセスを拒否するには**  
[Disable-EC2SerialConsoleAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2SerialConsoleAccess.html) コマンドレットを使用します。

```
Disable-EC2SerialConsoleAccess
```

出力例を次に示します。

```
False
```

------

## EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する
<a name="serial-console-iam"></a>

デフォルトではユーザーはシリアルコンソールにアクセスできません。組織は IAM ポリシーを設定して、ユーザーに必要なアクセスを許可する必要があります。詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

シリアルコンソールのアクセスについて、`ec2-instance-connect:SendSerialConsoleSSHPublicKey` アクションを含む JSON ポリシードキュメントを作成します。このアクションはシリアルコンソールセッションを開始するシリアルコンソールサービスにパブリックキーをプッシュするための許可をユーザーに付与します。特定の EC2 インスタンスへのアクセスを制限することをお勧めします。それ以外の場合、この許可を持つすべてのユーザーはすべての EC2 インスタンスのシリアルコンソールに接続できます。

**Topics**
+ [シリアルコンソールへのアクセスを明示的に許可する](#iam-explicitly-allow-access)
+ [シリアルコンソールへのアクセスを明示的に拒否する](#serial-console-IAM-policy)
+ [リソースタグを使用してシリアルコンソールへのアクセスを制御する](#iam-resource-tags)

### シリアルコンソールへのアクセスを明示的に許可する
<a name="iam-explicitly-allow-access"></a>

デフォルトでは誰もシリアルコンソールにアクセスできません。シリアルコンソールへのアクセスを許可するには明示的にアクセスを許可するようにポリシーを設定する必要があります。特定のインスタンスへのアクセスを制限するポリシーを設定することをお勧めします。

次のポリシーはインスタンス ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを許可します。

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

------
#### [ JSON ]

****  

```
{
    "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:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}
```

------

### シリアルコンソールへのアクセスを明示的に拒否する
<a name="serial-console-IAM-policy"></a>

次の IAM ポリシーは`*` (アスタリスク) で示されるすべてのインスタンスのシリアルコンソールへのアクセスを許可し、ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを明示的に拒否します。

------
#### [ JSON ]

****  

```
{
    "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:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}
```

------

### リソースタグを使用してシリアルコンソールへのアクセスを制御する
<a name="iam-resource-tags"></a>

リソースタグを使用して、インスタンスのシリアルコンソールへのアクセスを制御できます。

属性ベースアクセス制御はユーザーおよび AWS リソースにアタッチできるタグに基づいてアクセス権限を定義する認可戦略です。例えば、次のポリシーはインスタンスのリソースタグとプリンシパルのタグがタグキーについて同じ `SerialConsole` の値を持っている場合に限り、ユーザーがインスタンスのシリアルコンソール接続を開始することを許可します。

AWS リソースへのアクセスを制御するタグの使用の詳細については、「*IAM ユーザーガイド*」の「[AWS リソースへのアクセス制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。

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

------
#### [ JSON ]

****  

```
{
    "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:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}"
                }
            }
        }
    ]
}
```

------

## Linux インスタンスで OS ユーザーパスワードを設定する
<a name="set-user-password"></a>

パスワードなしでシリアルコンソールに接続できます。ただし、Linux インスタンスのトラブルシューティングでシリアルコンソールを使用するにはインスタンスにパスワードベースの OS ユーザーがある必要があります。**

root ユーザーを含む任意の OS ユーザーに対し、パスワードを設定できます。root ユーザーはすべてのファイルを変更できますが、それ以外の OS ユーザーは権限が制限されていることに注意してください。

シリアルコンソールを使用するすべてのインスタンスについて、ユーザーパスワードを設定する必要があります。これはインスタンスごとに 1 回のみ必要なセットアップです。

**注記**  
デフォルトでは、AWS が提供する AMI には、パスワードベースのユーザーが設定されていません。既にルートユーザーパスワードが設定されている AMI を使用してインスタンスを起動した場合はこれらの手順を省略できます。

**Linux インスタンスで OS ユーザーパスワードを設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。EC2 シリアルコンソールの接続方法を除き、インスタンスへの接続には任意の方法を使用できます。

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

   ```
   [ec2-user ~]$ sudo passwd root
   ```

   出力例を次に示します。

   ```
   Changing password for user root.
   New password:
   ```

1. `New password` のプロンプトに従って、新しいパスワードを入力してください。

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