AWS Systems Manager アイデンティティベースポリシーの例
デフォルトでは、AWS Identity and Access Management (IAM) エンティティ (ユーザーやロール) には、AWS Systems Manager リソースを作成または変更するアクセス許可は付与されていません。また、Systems Manager コンソール、AWS Command Line Interface (AWS CLI)、また AWS API を使用してタスクを実行しません。IAM 管理者は、指定されたリソースで特定の API 操作を実行するための許可をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらのアクセス許可が必要なユーザーまたはグループにそのポリシーをアタッチします。
次の許可ポリシーの例では、米国東部 (オハイオ) (us-east-2) AWS リージョン で MyDocument-
で始まる名前のドキュメントを削除することをユーザーに許可します。
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:DeleteDocument" ], "Resource" : [ "arn:aws:ssm:us-east-2:111122223333:document/MyDocument-*" ] } ] }
JSON ポリシードキュメントのこれらの例を使用して、IAM アイデンティティベースのポリシーを作成する方法については、IAM ユーザーガイドの「IAM ポリシーの作成」を参照してください。
トピック
ポリシーのベストプラクティス
ID ベースのポリシーは、ユーザーのアカウントで誰かが Systems Manager リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、AWS アカウント に料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウントで使用できます。ユースケースに応じた AWS カスタマー管理ポリシーを定義することで、許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWSマネージドポリシー」または「ジョブ機能の AWS マネージドポリシー」を参照してください。
-
最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、IAM ユーザーガイドのIAM でのポリシーとアクセス許可を参照してください。
-
IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、AWS CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、「IAM ユーザーガイド」の [IAM JSON policy elements: Condition] (IAM JSON ポリシー要素:条件) を参照してください。
-
IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer でポリシーを検証する」を参照してください。
-
多要素認証 (MFA) を要求する – AWS アカウント で IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA を使用した安全な API アクセス」を参照してください。
IAM でのベストプラクティスの詳細については、IAM ユーザーガイドのIAM でのセキュリティのベストプラクティスを参照してください。
Systems Manager コンソールを使用する
Systems Manager コンソールにアクセスするには、一連の最小限のアクセス許可が必要です。これらのアクセス許可により、AWS アカウント の Systems Manager リソースおよび他のリソースの詳細をリストおよび表示できます。
Systems Manager コンソールで Systems Manager を完全に利用するには、次のサービスへのアクセス許可が必要です。
-
AWS Systems Manager
-
Amazon Elastic Compute Cloud (Amazon EC2)
-
AWS Identity and Access Management (IAM)
必要なアクセス許可は、次のポリシーステートメントを使用して付与できます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:*", "ec2:describeInstances", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ssm.amazonaws.com" } } } ] }
最小限必要なアクセス許可よりも厳しく制限されたアイデンティティベースのポリシーを作成すると、そのポリシーを持つ IAM エンティティ (ユーザーやロール) に対してコンソールが意図したとおりに機能しなくなります。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソール許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。
ユーザーが自分の許可を表示できるようにする
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI か AWS API を使用してプログラム的に、このアクションを完了するアクセス許可が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
カスタマーマネージドポリシーの例
スタンドアロンポリシーを作成して独自の AWS アカウント で管理できます。このようなポリシーは、カスタマー管理ポリシーと呼ばれます。これらのポリシーは、AWS アカウント の複数のプリンシパルエンティティにアタッチできます。ポリシーをプリンシパルエンティティにアタッチすると、ポリシーで定義されたアクセス権限がエンティティに付与されます。詳細については、IAM ユーザーガイドの「お客様が管理するポリシーの例」を参照してください。
以下のユーザーポリシーの例では、さまざまな Systems Manager アクションのアクセス許可を付与します。これらを使用して、IAM エンティティ (ユーザーやロール) の Systems Manager アクセス許可を制限します。これらのポリシーは、Systems Manager API、AWS SDK、または AWS CLI でアクションを実行するときに機能します。コンソールを使用するユーザーに対しては、コンソールに固有の追加のアクセス権限を付与する必要があります。詳細については、「」を参照してくださいSystems Manager コンソールを使用する
注記
すべての例で、米国西部 (オレゴン) リージョン (us-west-2) を使用し、架空のアカウント ID を使用しています。AWS パブリックドキュメント (AWS-*
で始まるドキュメント) については、Amazon リソースネーム (ARN) にアカウント ID を指定しないでください。
例
例 1: ユーザーに単一リージョンで Systems Manager オペレーションを実行することを許可する
次の例では、米国東部 (オハイオ) リージョン (us-east-2) でのみ Systems Manager オペレーションを実行するための許可を付与します。
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:*" ], "Resource" : [ "arn:aws:ssm:us-east-2:
aws-account-ID
:*" ] } ] }
例 2: 単一リージョンのドキュメントの一覧表示をユーザーに許可する
次の例で付与する許可では、米国東部 (オハイオ) リージョン (us-east-2) の Update
で始まるすべてのドキュメント名を一覧表示できます。
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:ListDocuments" ], "Resource" : [ "arn:aws:ssm:us-east-2:
aws-account-ID
:document/Update*" ] } ] }
例3: ユーザーが特定 SSM ドキュメントを使用して特定ノードでコマンドを実行することを許可します。
次の IAM ポリシーの例は、ユーザーが米国東部 (オハイオ) リージョン (us-east-2) で次の操作を実行することを許可します。
-
Systems Manager のドキュメント (SSM ドキュメント) とドキュメントバージョンを一覧表示します。
-
ドキュメントに関する詳細の表示。
-
ポリシーに指定されたドキュメントを使用してコマンドを送信します。ドキュメント名は次のエントリによって決定します。
arn:aws:ssm:us-east-2:
aws-account-ID
:document/Systems-Manager-document-name
-
コマンドを 3 つのノードに送信します。ノードは 2 番目の
Resource
セクションにある以下のエントリによって決定されます。"arn:aws:ec2:us-east-2:
aws-account-ID
:instance/i-02573cafcfEXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID
:instance/i-0471e04240EXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID
:instance/i-07782c72faEXAMPLE" -
送信後のコマンドの詳細を表示。
-
自動化でワークフローを開始および停止する (AWS Systems Manager の機能)。
-
自動化ワークフローに関する情報を取得します。
ユーザーがアクセスできる任意のノードで同ユーザーがこのドキュメントを使用してコマンドを送信する許可を付与する場合、Resource
セクションで次のようなエントリを指定してその他のノードエントリを削除します。次の例では、米国東部 (オハイオ) リージョン (us-east-2) を使用しています。
"arn:aws:ec2:us-east-2:*:instance/*"
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:ListDocuments", "ssm:ListDocumentVersions", "ssm:DescribeDocument", "ssm:GetDocument", "ssm:DescribeInstanceInformation", "ssm:DescribeDocumentParameters", "ssm:DescribeInstanceProperties" ], "Effect": "Allow", "Resource": "*" }, { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:us-east-2:
aws-account-ID
:instance/i-02573cafcfEXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID
:instance/i-0471e04240EXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID
:instance/i-07782c72faEXAMPLE", "arn:aws:ssm:us-east-2:aws-account-ID
:document/Systems-Manager-document-name
" ] }, { "Action": [ "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations" ], "Effect": "Allow", "Resource": "*" }, { "Action": "ec2:DescribeInstanceStatus", "Effect": "Allow", "Resource": "*" }, { "Action": "ssm:StartAutomationExecution", "Effect": "Allow", "Resource": [ "arn:aws:ssm:us-east-2:aws-account-ID
:automation-definition/*" ] }, { "Action": "ssm:DescribeAutomationExecutions", "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:StopAutomationExecution", "ssm:GetAutomationExecution" ], "Effect": "Allow", "Resource": [ "*" ] } ] }
タグに基づく Systems Manager ドキュメントの表示
アイデンティティベースのポリシーの条件を使用して、タグに基づいて Systems Manager リソースへのアクセスをコントロールできます。この例では、SSM ドキュメントを表示できるポリシーを作成する方法を示します。ただし、ドキュメントタグ Owner
にそのユーザーのユーザー名の値がある場合のみ、アクセス許可は付与されます。このポリシーでは、このアクションをコンソールで実行するために必要なアクセス許可も付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListDocumentsInConsole", "Effect": "Allow", "Action": "ssm:ListDocuments", "Resource": "*" }, { "Sid": "ViewDocumentIfOwner", "Effect": "Allow", "Action": "ssm:GetDocument", "Resource": "arn:aws:ssm:*:*:document/*", "Condition": { "StringEquals": {"ssm:ResourceTag/Owner": "${aws:username}"} } } ] }
このポリシーをアカウントの ユーザーにアタッチできます。richard-roe
という名前のユーザーが Systems Manager ドキュメントを表示しようとする場合、ドキュメントに Owner=richard-roe
または owner=richard-roe
というタグが付いている必要があります。タグが付いていない場合は、アクセスが拒否されます。条件キー名では大文字と小文字は区別されないため、条件タグキー Owner
は Owner
と owner
に一致します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素: 条件」を参照してください。