SSM ドキュメントの共有
AWS Systems Manager (SSM) ドキュメントは、2 つの方法で同じ AWS リージョン 内の他のアカウントと共有できます。新しいドキュメント共有では、AWS Resource Access Manager (AWS RAM) を使用することをお勧めします。AWS RAM を使用すると、AWS Organizations の組織全体または組織単位 (OU)、または個々の AWS アカウント とドキュメントを共有できます。AWS RAM コンソールからすべての共有を管理することもできます。詳細については、「AWS RAM を使用して SSM ドキュメントを共有する」を参照してください。
元の共有メカニズムであるアカウントのアクセス許可を使用してドキュメントを共有することも可能です。アカウントのアクセス許可では、ドキュメントのアクセス許可を直接変更して、特定の AWS アカウント ID とプライベートに、またはすべてのユーザーとパブリックに共有できます。アカウントのアクセス許可による共有は引き続きサポートされています。詳細については、「アカウントのアクセス許可を使用して SSM ドキュメントを共有する」を参照してください。
アカウントのアクセス許可を使用してドキュメントをすでに共有している場合は、それらの共有を AWS RAM に移行できます。詳細については、「既存の共有ドキュメントを AWS RAM に移行する」を参照してください。
ドキュメントをパブリックとプライベートに同時に共有することはできません。また、同じドキュメントで AWS RAM 共有とアカウント許可 (ModifyDocumentPermission) 共有を同時に使用することはできません。
警告
信頼できるソースの共有 SSM ドキュメントのみ使用してください。共有ドキュメントを使用するときは、使用する前にドキュメントのコンテンツを慎重に確認し、インデックスの設定がどのように変わるかを理解してください。共有ドキュメントのベストプラクティスの詳細については、「共有 SSM ドキュメントのベストプラクティス」を参照してください。
制限事項
SSM ドキュメントの作業を始めるときは、次の制限事項に注意してください。
-
所有者のみがドキュメントを共有できます。
-
ドキュメントは、同じ AWS リージョン の他のアカウントとのみ共有できます。クロスリージョン共有はサポートされていません。
重要
Systems Manager において、Amazon 所有の SSM ドキュメントとは、Amazon Web Services 自体によって作成および管理されているドキュメントです。Amazon 所有のドキュメントでは、ドキュメント名に AWS-* のようなプレフィックスが含まれます。ドキュメントの所有者は、AWS 内の特定のユーザーアカウントではなく Amazon と見なされます。これらのドキュメントは公開されており、誰でも使用できます。
内容
共有 SSM ドキュメントのベストプラクティス
共有ドキュメントを共有したり使用したりする前に、次のガイドラインを確認してください。
- AWS RAM を使用してドキュメントを共有する (推奨)
-
新しいドキュメント共有では、
ModifyDocumentPermissionAPI オペレーションの代わりに AWS Resource Access Manager (AWS RAM) を使用することをお勧めします。AWS RAM を介して共有すると、個々の AWS アカウント ID を一覧表示する代わりに、AWS Organizations の組織全体または組織単位 (OU) とドキュメントを共有できます。リソースベースのポリシーを使用してアクセスを管理し、AWS RAM コンソールですべての共有を 1 か所で表示および監査することも可能です。手順については、「AWS RAM を使用して SSM ドキュメントを共有する」を参照してください。ModifyDocumentPermissionを使用して個々の AWS アカウント ID と共有したドキュメントは引き続きサポートされます。すでに共有しているドキュメントを AWS RAM に移動するには、「既存の共有ドキュメントを AWS RAM に移行する」を参照してください。 - 機密情報を削除する
-
AWS Systems Manager (SSM) ドキュメントを慎重に確認して、機密情報があればそれを削除します。例えば、ドキュメントに AWS 認証情報が含まれていないことを確認します。特定のユーザーとドキュメントを共有する場合、そのユーザーはドキュメント内の情報を表示することができます。パブリックにドキュメントを共有する場合、誰でもドキュメント内の情報を表示することができます。
- ドキュメントのパブリック共有をブロックする
-
アカウント内のすべてのパブリック共有されている SSM ドキュメントを確認し、共有を継続するかどうかを確認します。特定のドキュメントのパブリック共有を停止するには、このトピックの 共有 SSM ドキュメントのアクセス許可を変更する セクションで説明しているように、そのドキュメントのアクセス許可設定を変更する必要があります。パブリック共有ブロック設定を有効にしても、現在パブリック共有しているドキュメントには影響しません。ユースケースでパブリック共有を有効にする必要がある場合を除き、Systems Manager ドキュメントコンソールの [詳細設定] セクションで、SSM ドキュメントのパブリック共有ブロック設定をオンにすることをお勧めします。この設定をオンにすると、SSM ドキュメントへの不要なアクセスを防止できます。パブリック共有のブロック設定は、アカウントレベルの設定で、各 AWS リージョン で異なる可能性があります。
- IAM 信頼ポリシーを使用して Run Command アクションを制限する
-
ドキュメントにアクセスできるユーザーに対する制限付き AWS Identity and Access Management (IAM) ポリシーを作成します。IAM ポリシーにより、ユーザーが Amazon Elastic Compute Cloud (Amazon EC2) コンソールで表示できるか、AWS Command Line Interface (AWS CLI) または AWS Tools for Windows PowerShell で
ListDocumentsを呼び出して表示できる SSM ドキュメントが決まります。このポリシーでは、SSM ドキュメントに対してユーザーが実行できるアクションも制限されます。制限付きポリシーを作成し、ユーザーが特定のドキュメントのみを表示するようにできます。詳細については、「カスタマーマネージドポリシーの例」を参照してください。 - 共有 SSM ドキュメントを使用する際の注意事項
-
インスタンスで実行されるコマンドを理解するために、共有されている各ドキュメント (特にパブリックドキュメント) のコンテンツを確認します。ドキュメントは、実行後に意図的または非意図的に悪影響を及ぼすことがあります。ドキュメントが外部ネットワークを参照している場合、ドキュメントを使用する前に外部ソースを確認してください。
- ドキュメントハッシュを使用してコマンドを送信する
-
ドキュメントを共有する場合、システムは Sha-256 ハッシュを作成し、それをドキュメントに割り当てます。また、システムはドキュメントコンテンツのスナップショットを保存します。共有ドキュメントを使用してコマンドを送信するときは、コマンドでハッシュを指定して、次の条件が確実に該当するようにできます。
-
正しい Systems Manager ドキュメントからコマンドを実行している
-
ドキュメントが自分と共有されてからコンテンツが変更されていない
ハッシュが、指定されたドキュメントと一致しない場合、または共有ドキュメントのコンテンツが変更されている場合、コマンドは
InvalidDocument例外を返します。ハッシュは、外部の場所からドキュメントのコンテンツを確認することはできません。 -
- 補間パラメータを使用してセキュリティを高める
-
SSM ドキュメントの
Stringタイプのパラメータでは、パラメータと値interpolationType": "ENV_VARを使用して、パラメータ入力を潜在的に実行可能なコマンドではなく文字列リテラルとして処理することにより、コマンドインジェクション攻撃に対するセキュリティを高めます。この場合、エージェントは、パラメータの値を含むSSM_という名前の環境変数を作成します。parameter-nameStringタイプのパラメータを含む既存の SSM ドキュメントをすべて更新して"interpolationType": "ENV_VAR"を含めておくことが推奨されます。詳細については、「SSM ドキュメントコンテンツを書き込む」を参照してください。
SSM ドキュメントのパブリック共有をブロックする
開始する前に、AWS アカウント でパブリック共有されている SSM ドキュメントをすべて確認し、共有を継続するかどうかを確認します。特定の SSM ドキュメントのパブリック共有を停止するには、このトピックの 共有 SSM ドキュメントのアクセス許可を変更する セクションで説明しているように、そのドキュメントのアクセス許可設定を変更する必要があります。パブリック共有ブロック設定を有効にしても、現在パブリック共有している SSM ドキュメントには影響しません。パブリック共有ブロック設定を有効にすると、追加の SSM ドキュメントをパブリック共有できなくなります。
ユースケースでパブリック共有を有効にする必要がある場合を除き、SSM ドキュメントのパブリック共有ブロック設定をオンにすることをお勧めします。この設定をオンにすると、SSM ドキュメントへの不要なアクセスを防止できます。パブリック共有のブロック設定は、アカウントレベルの設定で、各 AWS リージョン で異なる可能性があります。現在共有していない SSM ドキュメントについてパブリック共有をブロックするには、次のタスクを完了します。
パブリック共有のブロック (コンソール)
SSM ドキュメントのパブリック共有をブロックするには
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[ドキュメント] を選択します。
-
[Preferences (設定)] を選択してから、パブリック共有のブロックセクションにある [編集] を選択します。
-
[パブリック共有のブロック] のチェックボックスを選択してから、[保存]を選択します。
パブリック共有のブロック (コマンドライン)
AWS Command Line Interface(AWS CLI) を開く、またはローカルコンピュータの AWS Tools for Windows PowerShellを開き、以下のコマンドを実行してSSM ドキュメントのパブリック共有をブロックします。
以下のコマンドで、設定値が更新されたことを確認します。
IAM によるパブリック共有をブロックするためのアクセスの制限
AWS Identity and Access Management (IAM) ポリシーを作成して、ユーザーによるパブリック共有のブロック設定の変更を制限します。これにより、SSM ドキュメントへの不要なアクセスをユーザーが許可できなくなります。
以下は、ユーザーがパブリック共有をブロックする設定を更新できないようにする IAM ポリシーの例です。この例を使用するには、Amazon Web Services のアカウント ID の例を自分のアカウント ID に置き換える必要があります。
AWS RAM を使用して SSM ドキュメントを共有する
AWS Resource Access Manager (AWS RAM) は、AWS Systems Manager (SSM) ドキュメントを共有するために推奨される方法です。AWS RAM では、ドキュメントへのアクセスを許可するリソース共有を作成し、AWS RAM コンソールからすべての共有を管理します。SSM ドキュメントは、次の 3 種類のプリンシパルと共有できます。
-
AWS Organizations 内の組織全体。
-
AWS Organizations 内の組織単位 (OU)。
-
個別の AWS アカウント。
ドキュメントは同じ AWS リージョン のアカウントとのみ共有でき、ドキュメント所有者のみがドキュメントを共有できます。AWS RAM との共有の詳細については、「AWS Resource Access Manager ユーザーガイド」の「AWS RAM の開始方法」を参照してください。
重要
AWS RAM を使用して SSM ドキュメントを共有する場合、デフォルトバージョンだけでなく、ドキュメントのすべてのバージョンを共有します。
注記
AWS RAM はプライベート共有のみをサポートします。ドキュメントをパブリックに共有するには、代わりに アカウントのアクセス許可を使用して SSM ドキュメントを共有する の手順を使用します。
注記
組織外の AWS アカウント とドキュメントを共有する場合、コンシューマーはドキュメントにアクセスする前に AWS RAM でリソース共有の招待を受け入れる必要があります。AWS RAM 共有が有効になっている組織内で共有する場合、招待は必要なく、AWS RAM は自動的にアクセスを許可します。
AWS RAM Service Quotas は、AWS RAM を介して SSM ドキュメントを共有する場合に適用されます。詳細については、「AWS Resource Access Manager ユーザーガイド」の「AWS RAM の Service Quotas」を参照してください。
既存の共有を管理するには (プリンシパルの更新や AWS RAM を通じて共有したドキュメントの共有の停止など)、「AWS Resource Access Manager ユーザーガイド」の「共有 AWS リソースの操作」を参照してください。
AWS RAM を使用してドキュメントを共有する (コンソール)
AWS RAM を使用してドキュメントを共有するには
-
AWS RAM コンソール (https://console.aws.amazon.com/ram/
) を開きます。 -
ナビゲーションペインで [リソース共有] を選択し、[リソース共有の作成] を選択します。
-
[名前] に、リソース共有の名前を入力します。
-
[リソース] で、リソースタイプ [SSM ドキュメント] を選択し、共有するドキュメントを選択します。
-
(オプション) [管理アクセス許可] で、AWS RAM が共有ドキュメントに適用する管理アクセス許可を確認します。
-
[次へ] を選択します。プリンシパル で、共有する組織、OU、または AWS アカウント を追加します。組織または OU と共有するには、AWS Organizations 内での共有を有効にする必要があります。
-
[次へ] を選択し、選択内容を確認してから、[リソース共有を作成] を選択します。
AWS RAM を使用したドキュメントの共有 (コマンドライン)
ローカルコンピュータで AWS Command Line Interface (AWS CLI) または AWS Tools for Windows PowerShell を開き、次のコマンドを実行して AWS RAM リソース共有を作成し、ドキュメントを共有します。--principals パラメータには、組織 ARN、OU ARN、または AWS アカウント ID を指定します。
注記
共有を作成した後、AWS RAM が変更を伝達するまでに数分かかる場合があります。その後、利用アカウントから変更を確認できます。
既存の共有ドキュメントを AWS RAM に移行する
現在、アカウントのアクセス許可 (ModifyDocumentPermission API オペレーション) を使用してドキュメントを共有している場合は、AWS-MigrateSSMDocumentSharingToRAM ランブックを実行してドキュメントを AWS RAM リソース共有に移行できます。この AWS 所有の AWS Systems Manager Automation ランブックは、ドキュメントの既存のコンシューマーを維持しながら、ドキュメントをアカウントアクセス許可共有から AWS RAM リソース共有に移行します。
注記
AWS-MigrateSSMDocumentSharingToRAM ランブックを実行すると AWS Systems Manager Automation が使用され、料金が発生します。詳細については、「AWS Systems Manager 料金表
注記
AWS RAM はプライベート共有のみをサポートしているため、パブリックに共有されているドキュメントを移行することはできません。パブリック共有ドキュメントを指定すると、ランブックは失敗します。アカウント内のすべてのドキュメントを移行する場合、ランブックはパブリック共有ドキュメントをスキップします。パブリック共有ドキュメントを移行するには、まずパブリック共有を停止し、必要なアカウント、組織単位 (OU)、または組織と共有します。
重要
ドキュメントを移行したら、AWS RAM を使用してそのドキュメントの共有を管理します。ModifyDocumentPermission および DescribeDocumentPermission API オペレーションは、移行されたドキュメントに対して 4xx エラーを返します。移行が失敗するかキャンセルされた場合、ランブックは自動的に変更をロールバックします。
アクセス許可ビューからドキュメントを移行するには (コンソール)
-
AWS Systems Manager コンソールを開き、ナビゲーションペインで [ドキュメント] を選択します。
-
移行するドキュメントを選択します。
-
[詳細] タブを選択します。
-
[アクセス許可] セクションで、[RAM へ移行] を選択します。Systems Manager は RAM へ移行ページを開きます。このページから移行を開始できます。
-
[移行するドキュメント] で、移行するドキュメントを選択します。個々のドキュメントを選択するか、[すべてのドキュメント] を選択して、アカウントのアクセス許可共有を使用するアカウント内のすべてのドキュメントを移行します。
-
[AutomationAssumeRole] で、Systems Manager Automation が移行の実行時に引き受ける IAM ロールを選択します。
-
(オプション) [組織単位] で、ドキュメントの共有先となる組織 ID または組織単位 (OU) ID を追加します。
-
[Start migration] を選択します。
パラメータの完全なリスト、AutomationAssumeRole ロールに必要な IAM アクセス許可、ランブック実行の詳細な手順については、「AWS Systems Manager Automation ランブックリファレンス」の「AWS-MigrateSSMDocumentSharingToRAM」を参照してください。
アカウントのアクセス許可を使用して SSM ドキュメントを共有する
AWS Systems Manager (SSM) ドキュメントを共有するには、ドキュメントのアクセス許可を変更して、特定の AWS アカウント ID (プライベート共有) またはすべてのユーザー (パブリック共有) にアクセス許可を付与します。自動化ドキュメントを共有するには、Systems Manager コンソールを使用するか、または AWS Command Line Interface (AWS CLI)、AWS Tools for Windows PowerShell、AWS SDK のいずれかを使用して ModifyDocumentPermission API オペレーションをプログラムで呼び出します。コンソールからドキュメントを共有する場合、共有できるのはドキュメントのデフォルトバージョンのみです。ドキュメントを共有する前に、共有するアカウントの AWS アカウント アカウント ID を取得します。ドキュメントを共有する場合に、これらのアカウント ID を指定します。
注記
新しいドキュメント共有では、代わりに AWS Resource Access Manager (AWS RAM) を使用することをお勧めします。AWS RAM を使用すると、組織全体または OU と共有し、すべての共有を 1 か所で管理できます。詳細については、「AWS RAM を使用して SSM ドキュメントを共有する」を参照してください。
制限事項
アカウントのアクセス許可を使用してドキュメントを共有する場合は、次の制限事項に注意してください。
-
ドキュメントを削除するには、その前にドキュメントの共有を停止する必要があります。詳細については、「共有 SSM ドキュメントのアクセス許可を変更する」を参照してください。
-
最大 1,000 個の でドキュメントを共有できますAWS アカウント この制限の引き上げをリクエストするには、サポート センター
までお問い合わせください。[制限のタイプ] で、[EC2 Systems Manager] を選択し、リクエストの理由を入力します。 -
パブリックに最大 5 件の SSM ドキュメントを共有できます。この制限の引き上げをリクエストするには、サポート センター
までお問い合わせください。[制限のタイプ] で、[EC2 Systems Manager] を選択し、リクエストの理由を入力します。
Systems Manager のService Quotas の詳細については、「AWS Systems Manager の Service Quotas」を参照してください。
ドキュメントを共有する (コンソール)
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[ドキュメント] を選択します。
-
ドキュメントリストで共有するドキュメントを選択し、[詳細を表示] を選択します。[Permissions] タブで自分がドキュメントの所有者であることを確認します。ドキュメントの所有者のみがドキュメントを共有できます。
-
[Edit] を選択します。
-
コマンドをパブリックに共有するには、[Public] を選択し、[Save] を選択します。コマンドをプライベートに共有するには、[Private (プライベート)] を選択し、AWS アカウント ID を入力します。次に、[Add permission (アクセス権限の追加)] を選択し、[Save (保存)] を選択します。
ドキュメントの共有 (コマンドライン)
次の手順では、コマンドラインセッションの AWS リージョン を指定する必要があります。
-
ローカルコンピュータで AWS CLI または AWS Tools for Windows PowerShell を開き、以下のコマンドを実行して認証情報を指定します。
次のコマンドで、
[Region](リージョン) をユーザー自身の情報に置き換えます。サポートされているregion値の一覧については、「Amazon Web Services 全般のリファレンス」の「Systems Manager サービスエンドポイント」にある Region 列を参照してください。 -
ドキュメントのアクセス権限を表示するには、次のコマンドを使用します。
-
ドキュメントのアクセス権限を変更して共有するには、次のコマンドを使用します。アクセス権限を編集するには、ドキュメントの所有者である必要があります。オプションで、特定の AWS アカウント ID と共有するドキュメントの場合は、
--shared-document-versionパラメータを使用して共有するドキュメントのバージョンを指定できます。バージョンを指定しない場合、ドキュメント のDefaultバージョンが共有されます。ドキュメントをパブリックに (allと) 共有する場合は、指定したドキュメントのすべてのバージョンがデフォルトで共有されます。次のコマンド例は、特定の個人の AWS アカウント ID に基づいて、その個人とドキュメントをプライベートに共有します。 -
次のコマンドを使用してドキュメントをパブリックに共有します。
注記
ドキュメントをパブリックに (
allと) 共有する場合は、指定したドキュメントのすべてのバージョンがデフォルトで共有されます。
共有 SSM ドキュメントのアクセス許可を変更する
コマンドを共有する場合、AWS Systems Manager (SSM) ドキュメントへのアクセス権を削除するか、SSM ドキュメントを削除するまで、そのコマンドを表示および使用できます。ただし、共有されている限り、ドキュメントを削除することはできません。ドキュメントを削除する前に、共有を停止する必要があります。
注記
このセクションは、アカウントのアクセス許可を使用して共有したドキュメントに適用されます。AWS RAM で共有したドキュメントを管理するには、「AWS RAM を使用して SSM ドキュメントを共有する」を参照してください。
ドキュメント共有の停止 (コンソール)
ドキュメント共有の停止
AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/
) を開きます。 ナビゲーションペインで、[ドキュメント] を選択します。
-
ドキュメントリストで共有を停止するドキュメントを選択し、[詳細] を選択します。[アクセス許可] セクションで自分がドキュメントの所有者であることを確認します。ドキュメントの所有者のみが、ドキュメントの共有を停止できます。
-
[Edit] を選択します。
-
[X] を選択してコマンドへのアクセス権を取り消す AWS アカウント ID を削除し、[Save] を選択します。
ドキュメントの共有の停止 (コマンドライン)
ローカルコンピュータで AWS CLI または AWS Tools for Windows PowerShell を開き、次のコマンドを実行してドキュメントの共有を停止します。
共有 SSM ドキュメントを使用する
AWS Systems Manager (SSM) ドキュメントを共有すると、システムは Amazon リソースネーム (ARN) を生成して、コマンドに割り当てます。Systems Manager コンソールから共有ドキュメントを選択して実行する場合、ARN は表示されません。ただし、Systems Manager コンソール以外の方法を使用して共有 SSM ドキュメントを実行する場合は、DocumentName リクエストパラメータにドキュメントの完全な ARN を指定する必要があります。コマンドを実行してドキュメントをリストすると、SSM ドキュメントの完全な ARN が表示されます。
注記
AWS のパブリックドキュメント (先頭に AWS-* が付くドキュメント)、または自己所有のドキュメントに ARN を指定する必要はありません。
共有 SSM ドキュメントを使用する (コマンドライン)
すべてのパブリック SSM ドキュメントをリスト表示するには
自分と共有されているプライベート SSM ドキュメントをリスト表示するには
使用できるすべての SSM ドキュメントをリスト表示するには
自分と共有されている SSM ドキュメントについての情報を入手するには
共有 SSM ドキュメントを実行するには