Run Command を設定する
AWS Systems Manager の一機能である Run Command を使用してノードを管理する前に、コマンドを実行するユーザーの AWS Identity and Access Management (IAM) ポリシーを設定する必要があります。IAM ポリシーで SendCommand
アクションにグローバル条件キーを使用する場合は、aws:ViaAWSService
条件キーを対象に含め、かつブール値を true
に設定する必要があります。次に例を示します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ssm:SendCommand"], "Resource": ["arn:aws:ssm:
region
:account
:document/YourDocument
"], "Condition": { "StringEquals": { "aws:SourceVpce": ["vpce-example1234
"] } } }, { "Effect": "Allow", "Action": ["ssm:Sendcommand"], "Resource": ["arn:aws:ssm:region
:account
:document/YourDocument
"], "Condition": { "Bool": {"aws:ViaAWSService": "true"} } } ] }
また、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 インスタンスと非 EC2 ノードが含まれます。情報は明示されていませんが、マネージド 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 ユーザーガイド」の「タグエディタ」を参照してください。