このIAMポリシーをユーザーにアタッチすることで、EC2 Instance Connect をサポートする様々なLinuxディストリビューションにおいて、SSHキーやパスワードなしでEC2インスタンスにセキュアにログインできるようになります。
この方法は、EC2 Instance Connect が利用可能な幅広いLinux OS で共通して利用できます。特定のOS に限定されるものではありませんので、ご自身の環境に合わせて柔軟に活用ください。
OS 互換性
EC2 Instance Connect は、以下の主要なLinuxディストリビューションを含む、多くのOS で利用可能です。
- Amazon Linux (2023, 2, 以降)
- Ubuntu (16.04 LTS 以降、推奨は 18.04 LTS 以降)
- CentOS (7 以降)
- Red Hat Enterprise Linux (RHEL) (7.4 以降)
- Debian (9 以降)
- SUSE Linux Enterprise Server (SLES) (12 SP3 以降)
- Fedora (30 以降)
- openSUSE Leap (42.3 以降)
- Oracle Linux (7.4 以降)
前提条件
EC2 Instance Connect を利用するためには、インスタンスとユーザー側で以下の前提条件を満たす必要があります。
インスタンス側の前提条件
-
サポートされている AMI: サポート対象OS一覧 を参照してください。
-
EC2 Instance Connect エージェント: インスタンスに
ec2-instance-connect
パッケージがインストールされ、実行されている必要があります。(最近の公式 AMI には通常プリインストールされています) -
サブネットのインターネットアクセス: インスタンスがパブリックIPアドレスを持つ場合はインターネットゲートウェイ、プライベートサブネットの場合はNATゲートウェイ経由でのインターネットアクセスが必要です。
-
セキュリティグループの設定: インスタンスに適用されているセキュリティグループで、アウトバウンドトラフィック を許可する必要があります。具体的な設定例:
-
最も簡単な設定 (セキュリティリスク注意): すべてのOutboundトラフィックを許可
-
タイプ:
すべてのOutboundトラフィック
またはすべてのトラフィック
-
プロトコル:
すべて
-
ポート範囲:
すべて
-
送信先:
0.0.0.0/0
-
タイプ:
セキュリティグループ設定手順 (AWSコンソール):
- EC2コンソールを開き、左メニューから「セキュリティグループ」を選択します。
- インスタンスに適用しているセキュリティグループを選択します。
- 「アウトバウンドのルール」タブを開き、「アウトバウンドルールを編集」をクリックします。
- 「ルールを追加」ボタンをクリックし、上記の設定例を参考にルールを追加します。
- 「ルールを保存」をクリックします。
-
最も簡単な設定 (セキュリティリスク注意): すべてのOutboundトラフィックを許可
ユーザー側の前提条件
- IAM 権限: 接続を試みる IAM ユーザーまたはロールに、上記の IAMポリシー (JSON) がアタッチされている必要があります。
- IAMポリシーアタッチ権限 (管理者向け): ユーザーにIAMポリシーをアタッチするためには、IAMポリシーを管理する権限が必要です。ポリシーアタッチ作業は通常、管理者権限を持つユーザーが行います。
IAMポリシー (JSON)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2-instance-connect:SendSSHPublicKey",
"ec2-instance-connect:OpenTunnel"
],
"Resource": "arn:aws:ec2:リージョン:アカウントID:instance/*"
},
{
"Effect": "Allow",
"Action": "ec2:DescribeInstances",
"Resource": "*"
}
]
}
ポリシーの説明
-
Version: "2012-10-17"
: IAMポリシーのバージョン指定です。 -
Statement
: ポリシーのステートメント(権限定義)の配列です。-
1つ目のステートメント:
-
Effect: "Allow"
: 許可する設定です。 -
Action
: 許可するアクションをリストで指定します。-
ec2-instance-connect:SendSSHPublicKey
: EC2 Instance Connect でインスタンスに一時的なSSH公開鍵を送信することを許可します。 -
ec2-instance-connect:OpenTunnel
: EC2 Instance Connect でインスタンスへのトンネルを開くことを許可します。
-
-
Resource: "arn:aws:ec2:リージョン:アカウントID:instance/*"
: このポリシーが適用されるリソースを指定します。-
arn:aws:ec2:リージョン:アカウントID:instance/*
: 特定リージョン (リージョン
) の特定アカウント (アカウントID
) 内の すべてのEC2インスタンス を対象とします。-
リージョン
とアカウントID
は、実際にご利用のAWSリージョンとアカウントIDに置き換えてください。 - 特定インスタンスのみに許可したい場合は、
arn:aws:ec2:リージョン:アカウントID:instance/インスタンスID
のようにインスタンスIDを指定します。
-
-
-
-
2つ目のステートメント:
-
Effect: "Allow"
: 許可する設定です。 -
Action: "ec2:DescribeInstances"
: EC2インスタンスの詳細情報を取得するec2:DescribeInstances
アクションを許可します。EC2 Instance Connect のコンソール画面でインスタンス一覧を表示するために必要です。 -
Resource: "*"
: リソースは*
(すべてのリソース) を指定しています。ec2:DescribeInstances
はリソースレベルのアクセス制御が細かくないため、*
で問題ありませんが、セキュリティポリシーに応じて調整してください。
-
-
1つ目のステートメント:
IAMポリシーアタッチの手順
-
IAMコンソールを開きます。
- AWSマネジメントコンソールにログインし、IAMサービスを開きます。
-
ユーザーを選択します。
- 左側のナビゲーションメニューから「ユーザー」を選択し、ポリシーをアタッチしたいユーザー名をクリックします。
-
「許可を追加」をクリックします。
- ユーザーの概要ページで、「許可」タブを開き、「許可を追加」ボタンをクリックします。
-
「ポリシーを直接アタッチ」を選択します。
- 「ポリシーを直接アタッチ」を選択します。
-
「ポリシーの作成」をクリックします。(または既存のポリシーを検索)
- 新しいポリシーを作成する場合は、「ポリシーの作成」ボタンをクリックします。
- 既存のポリシーを再利用する場合は、検索ボックスにポリシー名を入力して検索し、該当するポリシーを選択してスキップしてください。
-
ポリシー定義を入力します。
- 「JSON」タブを選択し、上記のJSON形式のIAMポリシーをコピー&ペーストします。
- 必ず
arn:aws:ec2:リージョン:アカウントID:instance/*
の部分を、ご自身の環境に合わせて修正してください。
-
「次へ:タグ」をクリックします。(オプション)
- 必要に応じてタグを設定します。
-
「次へ:確認」をクリックします。
- ポリシーの概要を確認し、ポリシー名を入力します (例:
EC2InstanceConnect-Allow-AllInstances
)。
- ポリシーの概要を確認し、ポリシー名を入力します (例:
- 「ポリシーの作成」をクリックします。
-
作成したポリシーをユーザーにアタッチします。
- ポリシー一覧から作成したポリシーを検索し、チェックボックスをオンにします。
- 「ポリシーのアタッチ」ボタンをクリックします。
-
注: IAMポリシーをユーザーにアタッチするには、ユーザー自身にIAMポリシーを管理する権限(例:
iam:AttachUserPolicy
、iam:AttachRolePolicy
など)が必要です。通常は管理者権限を持つユーザーがこれらの操作を行います。
EC2 Instance Connect でのログイン方法
-
EC2コンソールを開きます。
- AWSマネジメントコンソールにログインし、EC2サービスを開きます。
-
インスタンスを選択します。
- 左側のナビゲーションメニューから「インスタンス」を選択し、ログインしたいLinuxインスタンスを選択します。
-
「接続」ボタンをクリックします。
- インスタンスの詳細画面上部にある「接続」ボタンをクリックします。
- 「EC2 Instance Connect」タブを選択します。
-
ユーザー名を選択します。(OSのデフォルトユーザー名)
- OSのデフォルトユーザー名 (例: Ubuntuの場合は
ubuntu
、Amazon Linuxの場合はec2-user
、CentOSの場合はcentos
など) が選択されていることを確認します。
- OSのデフォルトユーザー名 (例: Ubuntuの場合は
-
「接続」ボタンをクリックします。
- 新しいブラウザウィンドウが開き、インスタンスへのターミナル接続が確立されます。
注意点
- セキュリティ: このポリシーは、特定リージョン、特定アカウント内のすべてのEC2インスタンスへのEC2 Instance Connectアクセスを許可する広範な権限を持つポリシーです。本番環境などでは、セキュリティを考慮し、必要最小限の権限となるように、リソースを特定インスタンスに限定する、または条件キーを使用するなど、より厳格なポリシーにすることを強く推奨します。
- 前提条件の確認: EC2 Instance Connect を利用する前に、インスタンスとユーザー側で上記の前提条件を必ず満たしていることを確認してください。詳細については、AWS公式ドキュメント をご確認ください。