Run Command のセットアップ - AWS Systems Manager

Run Command のセットアップ

AWS Systems Manager の一機能である Run Command を使用してノードを管理する前に、コマンドを実行するユーザーのために AWS Identity and Access Management (IAM) ユーザー ポリシーを設定する必要があります。詳細については、「Systems Manager の管理者以外の IAM ユーザーとグループを作成する」を参照してください。

また、Systems Manager 用のノードを設定する必要があります。詳細については、「AWS Systems Manager のセットアップ」を参照してください。

マネージドノードのセキュリティ体制や日常管理を最小限に抑えるために、以下のオプションのセットアップタスクを実行することを強くお勧めします。

Amazon EventBridge を使用してコマンドの実行をモニタリングする

EventBridge を使用して、コマンド実行ステータスの変更を記録できます。状態の遷移があると実行されるルールや、関心のある 1 以上の遷移があると実行されるルールを作成できます。EventBridge イベントが発生した場合、ターゲットアクションとして Run Command を指定することもできます。詳細については、「Systems Manager イベント用の EventBridge を設定する」を参照してください。

Amazon CloudWatch Logs を使用してコマンドの実行をモニタリングする

すべてのコマンド出力とエラーログを Amazon CloudWatch Logs グループに定期的に送信するように Run Command を設定できます。これらの出力ログは、ほぼリアルタイムでモニタリングし、特定の語句、値、またはパターンを検索して、検索に基づいてアラームを作成できます。詳細については、「Run Command の Amazon CloudWatch Logs の設定」を参照してください。

特定のマネージドノードへの Run Command アクセスを制限

AWS Identity and Access Management (IAM) を使用して、マネージドノードでコマンドを実行するユーザーの能力を制限することができます。具体的には、特定のタグ付けされたマネージドノードでのみユーザーがコマンドを実行できるようにする条件の IAM ユーザー ポリシーを作成できます。詳細については、「タグによる Run Command アクセスを制限」を参照してください。

タグによる Run Command アクセスを制限

このセクションでは、IAM ポリシーでタグ条件を指定して、マネージドインスタンスでコマンドを実行するユーザーの機能を制限する方法について説明します。マネージドインスタンスには、Systems Manager に設定されたハイブリッド環境で Amazon EC2 インスタンス、オンプレミスサーバー、エッジデバイス、VM が含まれます。情報は明示されていませんが、マネージド AWS IoT Greengrass へコアデバイスのアクセスを制限することもできます。開始するには、AWS IoT Greengrass デバイスのタグ付けが必要です。詳細については、「AWS IoT Greengrass Version 2 デベロッパーガイド」の「AWS IoT Greengrass Version 2 リソースのタグ付け」を参照してください。

ユーザーが特定のタグが付けられたノード上でのみコマンドを実行できるようにする条件を含む IAM ユーザー ポリシーを作成して、コマンドの実行を特定のマネージドノードに制限できます。次の例で、ユーザーは、任意のノード (Resource: arn:aws:ec2:*:*:instance/*) で任意の SSM ドキュメント (Resource: arn:aws:ssm:*:*:document/*) を使うことにより、そのノードが Finance WebServer (ssm:resourceTag/Finance: WebServer) であるという条件で、Run Command (Effect: Allow, Action: ssm:SendCommand) を使用できます。タグ付けされていないノードや、Finance: WebServer 以外のタグを持つノードにコマンドをユーザーが送信した場合、実行結果は AccessDenied と表示されます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:*:*:document/*" ] }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ec2:*:*:instance/*" ], "Condition":{ "StringLike":{ "ssm:resourceTag/Finance":[ "WebServers" ] } } } ] }

複数のタグ付けられたマネージドノードでユーザーがコマンドを実行できるよう許可する IAM ポリシーを作成できます。次のポリシーでは、2 つのタグがあるマネージドノードで、ユーザーがコマンドを実行することができます。これらの両方のタグ付けされていていないノードにユーザーがコマンドを送信した場合、実行結果は AccessDenied と表示されます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ], "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }

タグ付けられたマネージドノードの複数のグループでユーザーがコマンドを実行できるようにする IAM ポリシーを作成することもできます。次のポリシーでは、ユーザーはタグ付けられたノードのいずれかのグループ、または両方のグループでコマンドを実行できます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }

IAM ユーザーポリシーの詳細については、IAM ユーザーガイドの「マネージドポリシーとインラインポリシー」を参照してください。マネージドノードへのタグ付けの詳細については、「AWS Resource Groups ユーザーガイド」の「タグエディタ」を参照してください。