[前回] AWS公式資料で挑むSCS認定(45)-こんな時どうする(全分野その22)
はじめに
今回も引き続き、「こんな時どうする」集の作成です。
分野1: インシデント対応
- インシデント調査のためEC2インスタンスにSSH接続したいが、ポート22アクセスが許可されていない
- AWS Systems Managerで、Session ManagerのSSH接続を有効にする
- Session ManagerのマネージドノードとなるEC2インスタンスで、ポート22のインバウンドアクセス許可不要
- SSH接続を有効にする手順
- SSHサーバーがEC2インスタンスで実行されていることを確認
- SSM Agentのバージョン2.3.672.0以降がEC2インスタンスにインストールされていることを確認
- マネージドノードとしてアクティベートしたオンプレミスサーバー、エッジデバイス、仮想マシン(VM)にSession Managerを使用する場合、アドバンストインスタンス層を使用する必要あり
- SSHクライアントを使用しマネージドノードに接続するローカルマシンで、以下の手順を実行
- Session Managerプラグイン1.1.23.0バージョン以降がインストールされていることを確認
- SSH設定ファイルを更新し、Session Managerセッションを開始し、接続を介してすべてのデータを転送するプロキシコマンドを実行できるようにする
- Linuxの場合、SSH設定ファイル
~/.ssh/config
に以下を追加# SSH over Session Manager host i-* mi-* ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
- Windowsの場合、SSH設定ファイル
C:\Users\username\.ssh\config
に以下を追加# SSH over Session Manager host i-* mi-* ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"
- Linuxの場合、SSH設定ファイル
- マネージドノードへの接続に使用するPrivacy Enhanced Mail証明書(PEMファイル)または公開キーを作成/確認
- マネージドノードにすでに関連付けされたキーでなければならない
- EC2インスタンスの場合、インスタンス作成時に作成または選択したキーペアファイル
- プライベートキーファイルへのアクセス許可を設定し、ユーザーのみ読み取り可能に制限
chmod 400 my-key-pair.pem
- SSHセッション開始時、コマンドに証明書またはキーへのパスを指定
- マネージドノードにすでに関連付けされたキーでなければならない
- Session ManagerによるSSH接続のアクセス許可
- IAMポリシーで、IAMユーザー/グループ/ロールがSession ManagerでSSH接続を確立するための権限を付与
- 方法1: IAMコンソールで、Session Managerのエンドユーザーポリシーで作成したクイックスタートポリシーに要素を追加
"Effect": "Allow"
"Action": "ssm:StartSession"
-
"Resource": [
"arn:aws:ec2:region:アカウントID:instance/インスタンス名",
"arn:aws:ssm:*:*:document/AWS-StartSSHSession"]
- 方法2: AWS Management Console、AWS CLI、AWS APIを使用し、インラインポリシーをユーザーポリシーにアタッチ
- 方法1: IAMコンソールで、Session Managerのエンドユーザーポリシーで作成したクイックスタートポリシーに要素を追加
- IAMポリシーで、IAMユーザー/グループ/ロールがSession ManagerでSSH接続を確立するための権限を付与
- AWS Systems Managerで、Session ManagerのSSH接続を有効にする
分野2: ログとモニタリング(監視)
- EC2インスタンスへのSSH接続により実行されるコマンドを監視したい
- AWS Systems ManagerのSession Managerが適用されたマネージドノードにセキュアシェル(SSH)接続を有効に設定
- インバウンドポートを開いたり、踏み台ホストを維持したりすることなく、マネージドノードへ接続できる
- セキュリティグループでポート22のインバウンドアクセスが許可されている場合、不要となるため削除
- AWSアカウントのユーザーにAWS CLIを使用する許可を付与する必要あり
- SSH接続するユーザーはSecure Copy Protocol(SCP)を使用し、ローカルマシンとマネージドノード間でファイルコピーも可能
- インバウンドポートを開いたり、踏み台ホストを維持したりすることなく、マネージドノードへ接続できる
- IAMポリシーを使用し、IAMユーザー/グループ/ロールがSession ManagerでSSH接続を確立することを明示的に許可/拒否できる
- セッションデータのログ記録に、Amazon S3またはAmazon CloudWatch Logsを使用
- ログ記録は、
ポートフォワード
またはSSH
、を介して接続するSession Managerのセッション
では使用できない- 理由は、SSHはすべてのセッションデータを暗号化、Session ManagerはSSH接続のトンネルとしてのみ機能するため
- ログ記録は、
- AWS Systems ManagerのSession Managerが適用されたマネージドノードにセキュアシェル(SSH)接続を有効に設定
分野3: インフラストラクチャのセキュリティ
- 社内からVPCにVPNにより接続しているが、インターネット接続が不安定
- AWS Direct Connect接続で、ローカルネットワークからVPCへのAWS VPNを確立
- Direct Connect+VPN接続の利点
- 一貫性のあるスループットレベルを確保
- データ保護の暗号化アルゴリズムを実現
- インターネット経由のVPNより速くて安全
- Direct Connect+VPN接続の利点
- 接続方法
- Direct Connect接続を作成
- Direct Connect接続用のパブリック仮想インターフェイスを作成
-
Prefixes you want to advertise(アドバタイズするプレフィックス)
で、カスタマーゲートウェイデバイスのパブリックIPアドレスを入力- 必要に応じて、アドバタイズするネットワークプレフィックスを追加
- ※ 注意: すべてのAWSパブリックIPアドレスのプレフィックスがパブリック仮想インターフェイスに送信される
- AWSマネージドVPNエンドポイントのパブリックIPアドレスも含まれる
- 新しいVPN接続を作成
- 上述カスタマーゲートウェイのパブリックIPアドレスを指定
- カスタマーゲートウェイは、ボーダーゲートウェイプロトコル(BGP)と自律システム番号(ASN)を使用し設定可能
- VPCに接続するようにVPNを設定
- 上述カスタマーゲートウェイのパブリックIPアドレスを指定
- Direct Connect接続を作成
- AWS Direct Connect接続で、ローカルネットワークからVPCへのAWS VPNを確立
分野4: アイデンティティ(ID)及びアクセス管理
- AWS
アカウントA
のAmazon EC2 Auto Scalingグループのインスタンスで、別AWSアカウントB
のカスタマー管理キーを用いて暗号化したAmazon EBSを使用したい- カスタマー管理キーが、Auto Scalingグループと異なるアカウントにある場合、キーへのクロスアカウントアクセスを許可するキーポリシーを組み合わせて付与する必要あり
-
アカウントB
で、カスタマー管理キーのキーポリシーを作成- ステートメント1、
アカウントA
のIAMユーザーまたはロールにキー操作許可を付与 - ※ AWSアカウントにキーへのフルアクセスを付与しても、IAMユーザーまたはロールにキーへのアクセス権は付与されない
"Effect": "Allow"
"Principal": {"AWS": ["arn:aws:iam::アカウントAのID:root"]}
-
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"]
"Resource": "*"
- ステートメント2、
アカウントA
のIAMユーザとロールに独自アクセス許可を委任できるアクセス許可を付与"Effect": "Allow"
"Principal": {"AWS": ["arn:aws:iam::アカウントAのID:root"]}
"Action": ["kms:CreateGrant"]
"Resource": "*"
- ステートメント1、
- つぎに、KMSキー関連のアクセス許可をAuto Scalingの
サービスにリンクされたロール
に委任する許可を作成aws kms create-grant \
--region リージョン \
--key-id arn:aws:kms:リージョン::key/KMSキーのARN \
--grantee-principal arn:aws:iam::アカウントA:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling \
--operations "Encrypt" "Decrypt" "ReEncryptFrom" "ReEncryptTo" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "DescribeKey" "CreateGrant"
-
- カスタマー管理キーが、Auto Scalingグループと異なるアカウントにある場合、キーへのクロスアカウントアクセスを許可するキーポリシーを組み合わせて付与する必要あり
分野5: データ保護
- ALBのターゲットグループに登録された複数インスタンス間の通信を暗号化し保護したい
- ALB経由のトラフィックは自動的な暗号化をサポートされず、送信元EC2インスタンスでデータ暗号化してから、送信先EC2インスタンスに送信する必要あり
- AWSではすべてのタイプのEC2インスタンス間において安全でプライベートな接続を提供する
- ただし、インスタンス間の転送中のトラフィックを自動暗号化をサポートするのは、一部インスタンスタイプのみ
- ネットワークのパフォーマンスには影響しない
- インスタンス間でトラフィック暗号化のサポートにおける制限事項
- サポート対象インスタンスタイプが限定される
- Nitro Systemハードウェアのオフロード機能をサポートする場合、AEAD 256ビット暗号化アルゴリズムを用いて自動暗号化
- 各インスタンスは、同じリージョンに存在する必要あり
- 各インスタンスは、同じVPC内またはピア接続されたVPCに存在する必要あり
- トラフィックが、仮想ネットワークデバイスもしくはサービス(ロードバランサーやTransit Gatewayなど)を通過してはいけない
- サポート対象インスタンスタイプが限定される
おわりに
「こんな時どうする」の追記でした。
次回も続きます、お楽しみに。