SSM Agent を介してルートレベルコマンドへのアクセスを制限する - AWS Systems Manager

SSM Agent を介してルートレベルコマンドへのアクセスを制限する

AWS Systems Manager エージェント (SSM Agent) は、ハイブリッドクラウドとマルチクラウド環境の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスおよびその他のマシンタイプで、ルート権限 (Linux) または SYSTEM 権限 (Windows Server) を使用して実行します。最高レベルのシステムアクセス許可が存在するため、SSM Agent にコマンドを送信する許可が付与されている信頼されたエンティティにはルートまたは SYSTEM アクセス許可があります (AWS において、AWS 内でアクションを実行してリソースにアクセスできる信頼されたエンティティはプリンシパルと呼ばれます。プリンシパルは AWS アカウントのルートユーザー、ユーザー、ロールのいずれかになります)。

このレベルのアクセスは、プリンシパルが承認済みの Systems Manager コマンドを SSM Agent に送信するために必要です。ただし、これによりプリンシパルが SSM Agent の潜在的な脆弱性を悪用して、悪意のあるコードを実行できるようになります。

特に、SendCommand および StartSession コマンドを実行する権限を慎重に制限する必要があります。適切な最初のステップは、組織内の選ばれたプリンシパルのみに各コマンドに対するアクセス権限を付与することです。ただし、プリンシパルがこれらのコマンドを実行できる対象マネージドノードを制限して、セキュリティ体制をさらに強化することをお勧めします。これは、プリンシパルに割り当てられた IAM ポリシーで実行できます。IAM ポリシーに特定のタグまたはタグの組み合わせが付けられたマネージドノードのみでコマンドを実行できるようにユーザーを制限する条件を含めることができます。

例えば、テスト用と本番稼働用の 2 つのサーバーフリートがあるとします。ジュニア (短経歴) エンジニアに指定された IAM ポリシーでは、そのユーザーが ssm:resourceTag/testServer でタグ付けされたインスタンスでのみコマンドを実行できるように指定します。ただし、すべてのインスタンスへのアクセスが必要な、主任エンジニアの小さなグループでは、ssm:resourceTag/testServerssm:resourceTag/productionServer の両方でタグ付けされたインスタンスへのアクセス権を付与します。

この方法を使用すると、ジュニアエンジニアが本番稼働用インスタンスでコマンドを実行しようとした場合、アクセスを拒否されます。割り当てられている IAM ポリシーに ssm:resourceTag/productionServer でタグ付けされたインスタンスへの明示的なアクセスが許可されていないからです。

詳細情報および例については、次のトピックを参照してください。