AWS Systems Manager と IAM の連携方法 - AWS Systems Manager

AWS Systems Manager と IAM の連携方法

AWS Identity and Access Management (IAM) を使用して、AWS Systems Manager へのアクセスを管理するには、Systems Manager で使用できる IAM の機能を理解しておく必要があります。Systems Manager およびその他の AWS のサービス のサービスが IAM と連携する方法の概要については、IAM ユーザーガイドの「IAM と連携する AWS のサービス」を参照してください。

Systems Manager アイデンティティベースのポリシー

IAM アイデンティティベースのポリシーでは、許可または拒否されたアクションとリソースを指定でき、さらにアクションが許可または拒否された条件を指定できます。Systems Manager は、特定のアクション、リソース、および条件キーをサポートします。JSON ポリシーで使用するすべての要素については、「IAM ユーザーガイド」の「IAM JSON ポリシーエレメントのリファレンス」を参照してください。

アクション

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件アクションを実行できるかということです。

JSON ポリシーのAction要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWSAPI オペレーションと同じです。一致する API オペレーションのない権限のみのアクションなど、いくつかの例外があります。また、ポリシーに複数アクションが必要なオペレーションもあります。これらの追加アクションは、 依存アクション と呼ばれます。

このアクションは、関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

Systems Manager のポリシーアクションは、アクションの前に次のプレフィックスを使用します: ssm:。たとえば、Systems Manager PutParameter API オペレーションを使用して Systems Manager パラメータ (SSM パラメータ) を作成するアクセス許可を付与するには、ポリシーに ssm:PutParameter アクションを含めます。ポリシーステートメントには、Action 要素または NotAction 要素のいずれかを含める必要があります。 Systems Manager は、このサービスで実行できるタスクを説明する独自の一連のアクションを定義します。

単一のステートメントに複数のアクションを指定するには、次のようにカンマで区切ります。

"Action": [ "ssm:action1", "ssm:action2"
注記

以下の AWS Systems Manager の機能は、アクションの前に異なるプレフィックスを使用します。

  • AWS AppConfig は、アクションの前にプレフィックス appconfig: を使用します。

  • インシデントマネージャーは、アクションの前にプレフィックス ssm-incidents: または ssm-contacts: を使用します。

  • Systems Manager GUI Connect は、アクションの前にプレフィックス ssm-guiconnect を使用します。

ワイルドカード (*) を使用して複数アクションを指定できます。例えば、Describe という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。

"Action": "ssm:Describe*"

Systems Manager アクションのリストを確認するには、サービス認可リファレンスの「AWS Systems Manager で定義されるアクション」を参照してください。

リソース

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件アクションを実行できるかということです。

Resource JSON ポリシー要素は、アクションが適用されるオブジェクトを指定します。ステートメントには、Resource または NotResource要素を含める必要があります。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。これは、リソースレベルの権限と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

オペレーションのリスト化など、リソースレベルの権限をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。

"Resource": "*"

たとえば、Systems Manager メンテナンスウィンドウリソースには次の ARN 形式があります。

arn:aws:ssm:region:account-id:maintenancewindow/window-id

米国東部 (オハイオ) リージョンにおいて、ステートメントで mw-0c50858d01EXAMPLE メンテナンスウィンドウを指定するには、次のような ARN を使用します。

"Resource": "arn:aws:ssm:us-east-2:123456789012:maintenancewindow/mw-0c50858d01EXAMPLE"

特定のアカウントに属するすべてのメンテナンスウィンドウを指定するには、ワイルドカード (*) を使用します。

"Resource": "arn:aws:ssm:region:123456789012:maintenancewindow/*"

Parameter Store API オペレーションで、階層の 1 レベルのすべてのパラメータに対するアクセスを許可または制限するには、次のように階層名と AWS Identity and Access Management (IAM) ポリシーを使用できます。

"Resource": "arn:aws:ssm:region:123456789012:parameter/Dev/ERP/Oracle/*"

リソースの作成など、一部の Systems Manager アクションは、特定のリソースで実行できません。このような場合は、ワイルドカード (*) を使用する必要があります。

"Resource": "*"

一部の Systems Manager API オペレーションは、複数のリソースを受け入れます。1 つのステートメントで複数のリソースを指定するには、次のように ARN をカンマで区切ります。

"Resource": [ "resource1", "resource2"
注記

ほとんどの AWS のサービスでは、ARN 内のコロン (:) またはスラッシュ (/) は同じ文字として扱われます。ただし、Systems Manager では、リソースパターンおよびルールで完全一致が必要です。イベントパターンの作成時に、リソースの ARN と一致する正しい ARN 文字を使用します。

以下の表は、Systems Manager でサポートされているリソースタイプの ARN 形式を示しています。

注記

ARN 形式には以下の例外があることに注意してください。

  • 以下の AWS Systems Manager の機能は、アクションの前に異なるプレフィックスを使用します。

    • AWS AppConfig は、アクションの前にプレフィックス appconfig: を使用します。

    • インシデントマネージャーは、アクションの前にプレフィックス ssm-incidents: または ssm-contacts: を使用します。

    • Systems Manager GUI Connect は、アクションの前にプレフィックス ssm-guiconnect を使用します。

  • Amazon が所有するドキュメントやオートメーション定義リソース、および Amazon とサードパーティの両方のソースから提供されるパブリックパラメータには、ARN 形式のアカウント ID は含まれていません。例:

    • SSM ドキュメント AWS-RunPatchBaseline:

      arn:aws:ssm:us-east-2:::document/AWS-RunPatchBaseline

    • オートメーションランブック AWS-ConfigureMaintenanceWindows:

      arn:aws:ssm:us-east-2:::automation-definition/AWS-ConfigureMaintenanceWindows

    • パブリックパラメータ /aws/service/bottlerocket/aws-ecs-1-nvidia/x86_64/1.13.4/image_version:

      arn:aws:ssm:us-east-2::parameter/aws/service/bottlerocket/aws-ecs-1-nvidia/x86_64/1.13.4/image_version

    これらの 3 種類のリソースタイプの詳細については、次のトピックを参照してください。

リソースタイプ ARN 形式
アプリケーション (AWS AppConfig) arn:aws:appconfig:region:account-id:application/application-id
関連付け arn:aws:ssm:region:account-id:association/association-id
自動化の実行 arn:aws:ssm:region:account-id:automation-execution/automation-execution-id
自動化定義 (およびバージョンサブリソース)

arn:aws:ssm:region:account-id:automation-definition/automation-definition-id:version-id 
                                    Footnote callout 1

設定プロファイル (AWS AppConfig) arn:aws:appconfig:region:account-id:application/application-id/configurationprofile/configurationprofile-id
連絡先 (Incident Manager)

arn:aws:ssm-contacts:region:account-id:contact/contact-alias

デプロイ戦略 (AWS AppConfig) arn:aws:appconfig:region:account-id:deploymentstrategy/deploymentstrategy-id
ドキュメント

arn:aws:ssm:region:account-id:document/document-name

環境 (AWS AppConfig) arn:aws:appconfig:region:account-id:application/application-id/environment/environment-id
インシデント

arn:aws:ssm-incidents:region:account-id:incident-record/response-plan-name/incident-id

メンテナンスウィンドウ

arn:aws:ssm:region:account-id:maintenancewindow/window-id

マネージドノード

arn:aws:ssm:region:account-id:managed-instance/managed-node-id

マネージドノードインベントリ arn:aws:ssm:region:account-id:managed-instance-inventory/managed-node-id
OpsItem arn:aws:ssm:region:account-id:opsitem/OpsItem-id
パラメータ

1 レベルのパラメータ:

  • arn:aws:ssm:region:account-id:parameter/parameter-name/

階層構造を反映したパラメータ名:

  • arn:aws:ssm:region:account-id:parameter/parameter-name-root/level-2/level-3/level-4/level-5 
                                    Footnote callout 2

パッチベースライン

arn:aws:ssm:region:account-id:patchbaseline/patch-baseline-id

対応計画

arn:aws:ssm-incidents:region:account-id:response-plan/response-plan-name

セッション

arn:aws:ssm:region:account-id:session/session-id 
                                    Footnote callout 3

すべての Systems Manager リソース

arn:aws:ssm:*

特定の AWS リージョン の特定の AWS アカウント が所有するすべての Systems Manager リソース

arn:aws:ssm:region:account-id:*


                                    Footnote callout 1
                                オートメーションの定義について、Systems Manager は第 2 レベルのリソース、バージョン ID をサポートしています。AWS では、これらの第 2 レベルのリソースはサブリソースと呼ばれます。オートメーション定義リソースのバージョンサブリソースを指定することで、特定バージョンの自動化定義にアクセスできます。たとえば、ノード管理においてオートメーション定義の最新バージョンのみが使用される場合があります。


                                    Footnote callout 2
                                パラメータを編成して管理するには、階層構造を反映したパラメータ名を作成できます。階層構造では、パラメータ名のパスの定義にスラッシュを使用できます。パラメータリソース名には、最大 15 レベルを反映できます。作成する階層には、環境の既存の階層構造を反映するようお勧めします。詳細については、「」を参照してくださいSystems Manager パラメータを作成する


                                    Footnote callout 3
                                ほとんどの場合、セッション ID は、セッションを開始したアカウントユーザーの ID に英数字のサフィックスを付けたものを使用して作成されます。以下に例を示します。

arn:aws:us-east-2:111122223333:session/JohnDoe-1a2b3c4sEXAMPLE

ただし、ユーザー ID が使用できない場合、ARN は次の方法で構築されます。

arn:aws:us-east-2:111122223333:session/session-1a2b3c4sEXAMPLE

ARN の形式の詳細については、「Amazon Web Services 全般のリファレンス」の「Amazon リソースネーム (ARN)」を参照してください。

Systems Manager リソースのタイプとその ARN のリストを確認するには、サービス認可リファレンスの「AWS Systems Manager で定義されるリソース」を参照してください。どのアクションで各リソースの ARN を指定できるかについては、「AWS Systems Manager で定義されるアクション」を参照してください。

Systems Manager の条件キー

管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件アクションを実行できるかということです。

Condition 要素 (または Condition ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition 要素はオプションです。イコールや未満などの 条件演算子 を使用して条件式を作成することで、ポリシーの条件とリクエスト内の値を一致させることができます。

1 つのステートメントに複数の Condition 要素を指定するか、1 つの Condition 要素に複数のキーを指定すると、AWS は AND 論理演算子を使用してそれらを評価します。単一の条件キーに複数の値を指定すると、AWS は OR 論理演算子を使用して条件を評価します。ステートメントの権限が付与される前にすべての条件が満たされる必要があります。

条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる権限を付与することができます。詳細については、『IAM ユーザーガイド』の「‭‬IAM ポリシーの要素: 変数およびタグ‭‬」を参照してください。

AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、「IAM ユーザーガイド」の「AWS グローバル条件コンテキストキー」を参照してください。

Systems Manager の条件キーのリストを確認するには、サービス認可リファレンスAWS Systems Manager の条件キーを参照してください。どのアクションおよびリソースと条件キーを使用できるかについては、AWS Systems Manager で定義されるアクションを参照してください。

ssm:resourceTag/* 条件キーの使用については、以下のトピックを参照してください。

ssm:Recursive および ssm:Overwrite 条件キーの使用については、「パラメータ階層の使用」を参照してください。

Systems Manager アイデンティティベースのポリシーの例を表示するには、AWS Systems Manager アイデンティティベースポリシーの例を参照してください。

Systems Manager リソースベースのポリシー

Amazon Simple Storage Service (Amazon S3) などの他の AWS のサービスでは、リソースベースのアクセス権限ポリシーがサポートされています。例えば、ポリシーを S3 バケットにアタッチして、そのバケットに対するアクセス許可を管理できます。

Systems Manager では、リソースベースのポリシーはサポートされていません。

Systems Manager タグに基づく認可

タグを Systems Manager リソースにアタッチすることも、Systems Manager へのリクエストでタグを渡すこともできます。タグに基づいてアクセスを制御するには、ssm:resourceTag/key-nameaws:ResourceTag/key-nameaws:RequestTag/key-name、または aws:TagKeys 条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。タグを作成または更新するときに、次のリソースタイプにタグを追加できます。

  • ドキュメント

  • マネージドノード

  • メンテナンスウィンドウ

  • Parameter

  • パッチベースライン

  • OpsItem

Systems Manager リソースのタグ付けについては、「Systems Manager リソースにタグを付ける」を参照してください。

リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースのポリシーの例を表示するには、「タグに基づく Systems Manager ドキュメントの表示」を参照してください。

Systems Manager IAM ロール

IAM ロール は、特定のアクセス許可を持つ、AWS アカウント 内のエンティティです。

Systems Manager での一時的な認証情報の使用

テンポラリ認証情報を使用して、フェデレーションでサインイン、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。テンポラリセキュリティ認証情報を取得するには、AssumeRole または GetFederationToken などの AWS Security Token Service AWS STSAPI オペレーションを呼び出します。

Systems Manager では、一時認証情報の使用をサポートしています。

サービスリンクロール

サービスにリンクされたロールは、AWS のサービスが他のサービスのリソースにアクセスして自動的にアクションを完了することを許可します。サービスリンクロールは、IAM アカウント内に表示され、サービスによって所有されます。 管理者は、サービスにリンクされたロールのアクセス許可を表示できますが、編集することはできません。

Systems Manager はサービスにリンクされたロールをサポートします。Systems Manager サービスにリンクされたロールの作成または管理の詳細については、「Systems Manager のサービスにリンクされたロールの使用」を参照してください。

サービスロール

この機能により、ユーザーに代わってサービスがサービスロールを引き受けることが許可されます。このロールにより、サービスはユーザーに代わって他のサービスのリソースにアクセスし、アクションを完了できます。サービスロールは、IAM アカウントに表示され、アカウントによって所有されます。つまり、 管理者は、このロールのアクセス許可を変更できます。ただし、それにより、サービスの機能が損なわれる場合があります。

Systems Manager はサービスロールをサポートします。

Systems Manager で IAM ロールを選択

Systems Manager がマネージドノードとやり取りするには、ユーザーに代わって Systems Manager がノードにアクセスできるようにロールを選択する必要があります。サービスロールあるいはサービスにリンクされたロールを以前に作成している場合、Systems Manager は選択できるロールのリストを示します。マネージドノードの起動と停止を許可するロールを選択することが重要です。

EC2 インスタンスにアクセスするには、インスタンスのアクセス許可を設定する必要があります。詳細については、「Systems Manager にインスタンスのアクセス許可を設定する」を参照してください。

ハイブリッドおよびマルチクラウドの非 EC2 ノードにアクセスするには、AWS アカウント に IAM サービスロールが必要です。詳細については、「ハイブリッド環用の IAM サービスロールを作成する」を参照してください。

Automation ワークフローは、サービスロール (または継承ロール) のコンテキストで開始できます。これにより、サービスがユーザーに代わってアクションを実行できるようになります。継承ロールを指定しない場合、オートメーションは、実行を呼び出したユーザーのコンテキストを使用します。ただし、特定の条件では、Automation のサービスロールを指定する必要があります。詳細については、「オートメーションのサービスロール(ロールを引き受ける)アクセスの設定」を参照してください。

AWS Systems Manager マネージドポリシー

AWS は、 によって作成され管理されるスタンドアロンの IAM ポリシーを提供することで、多くの一般的ユースケースに対応します。AWSこれらの AWS 管理ポリシーでは、一般的ユースケースに必要なアクセス権限を付与されるため、どのアクセス権限が必要であるかを調べる必要がありません。(独自のカスタム IAM ポリシーを作成して、Systems Manager アクションとリソースのための権限を許可することもできます。)

Systems Manager のマネージドポリシーの詳細については、「AWS の AWS Systems Manager マネージドポリシー」を参照してください。

マネージドポリシー全般については、「IAM ユーザーガイド」の「AWS マネージドポリシー」を参照してください。