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

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

SSM エージェント は、root アクセス権限 (Linux) または SYSTEM アクセス権限 (Windows Server) を使用して EC2 インスタンスで実行されます。最高レベルのシステムアクセス権限が存在するため、SSM エージェント にコマンドを送信する権限が付与されている信頼されたエンティティには root または SYSTEM アクセス権限があります。(AWS では、AWS のアクションを実行してリソースにアクセスできる信頼されたエンティティは、プリンシパルと呼ばれます。AWS アカウントのルートユーザー、IAM ユーザー、またはロールをプリンシパルにすることができます。

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

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

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

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

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