このIAMポリシーをユーザーにアタッチすることで、EC2 Instance Connectをサポートする様々なLinuxディストリビューションにおいて、SSHキーやパスワードなしでEC2インスタンスにログインできるようになります。
この方法は、EC2 Instance Connectが利用可能な幅広いLinux OSで共通して利用できます。 特定のOSに限定されるものではありませんので、ご自身の環境に合わせて活用ください。
OS 互換性:
この方法は、以下の主要なLinuxディストリビューションを含む、EC2 Instance Connectをサポートする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 以降)
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
)。
- ポリシーの概要を確認し、ポリシー名を入力します (例:
- 「ポリシーの作成」をクリックします。
- 作成したポリシーをユーザーにアタッチします。
- ポリシー一覧から作成したポリシーを検索し、チェックボックスをオンにします。
- 「ポリシーのアタッチ」ボタンをクリックします。
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を使用するには、インスタンスがEC2 Instance Connectの前提条件を満たしている必要があります。詳細については、AWS公式ドキュメントをご確認ください。
コメント