SSM ドキュメントの共有 - AWS Systems Manager

SSM ドキュメントの共有

AWS Systems Manager (SSM) ドキュメントは、同じ AWS リージョン のアカウントとプライベートに共有することも、パブリックに共有することもできます。ドキュメントをプライベートに共有するには、ドキュメントのアクセス許可を変更して、特定の人物が AWS アカウント ID に基づいてドキュメントにアクセスできるようにします。SSM ドキュメントをパブリックに共有するには、ドキュメントのアクセス許可を変更し、[All] を指定します。ドキュメントをパブリックとプライベートで同時に共有することはできません。

警告

信頼できるソースの共有 SSM ドキュメントのみ使用してください。共有ドキュメントを使用するときは、使用する前にドキュメントのコンテンツを慎重に確認し、インデックスの設定がどのように変わるかを理解してください。共有ドキュメントのベストプラクティスの詳細については、「共有 SSM ドキュメントのベストプラクティス」を参照してください。

制約事項

SSM ドキュメントの作業を始めるときは、次の制限事項に注意してください。

  • 所有者のみがドキュメントを共有できます。

  • ドキュメントを削除するには、その前にドキュメントの共有を停止する必要があります。詳細については、「共有 SSM ドキュメントのアクセス許可を変更する」を参照してください。

  • 最大 1000 個の でドキュメントを共有できますAWS アカウント この制限の引き上げをリクエストするには、AWS Support センターまでお問い合わせください。[制限のタイプ] で、[EC2 Systems Manager] を選択し、リクエストの理由を入力します。

  • パブリックに最大 5 件の SSM ドキュメントを共有できます。この制限の引き上げをリクエストするには、AWS Support センターまでお問い合わせください。[制限のタイプ] で、[EC2 Systems Manager] を選択し、リクエストの理由を入力します。

  • ドキュメントは、同じ AWS リージョン の他のアカウントとのみ共有できます。クロスリージョン共有はサポートされていません。

Systems Manager のService Quotas の詳細については、「AWS Systems Manager の Service Quotas」を参照してください。

共有 SSM ドキュメントのベストプラクティス

共有ドキュメントを共有したり使用したりする前に、次のガイドラインを確認してください。

機密情報を削除する

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 ドキュメントのパブリック共有をブロックする

開始する前に、AWS アカウント でパブリック共有されている SSM ドキュメントをすべて確認し、共有を継続するかどうかを確認します。特定の SSM ドキュメントのパブリック共有を停止するには、このトピックの 共有 SSM ドキュメントのアクセス許可を変更する セクションで説明しているように、そのドキュメントのアクセス許可設定を変更する必要があります。パブリック共有ブロック設定を有効にしても、現在パブリック共有している SSM ドキュメントには影響しません。パブリック共有ブロック設定を有効にすると、追加の SSM ドキュメントをパブリック共有できなくなります。

ユースケースでパブリック共有を有効にする必要がある場合を除き、SSM ドキュメントのパブリック共有ブロック設定をオンにすることをお勧めします。この設定をオンにすると、SSM ドキュメントへの不要なアクセスを防止できます。パブリック共有のブロック設定は、アカウントレベルの設定で、各 AWS リージョン で異なる可能性があります。現在共有していない SSM ドキュメントについてパブリック共有をブロックするには、次のタスクを完了します。

パブリック共有のブロック (コンソール)

SSM ドキュメントのパブリック共有をブロックするには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[ドキュメント] を選択します。

  3. [Preferences (設定)] を選択してから、パブリック共有のブロックセクションにある [編集] を選択します。

  4. [パブリック共有のブロック] のチェックボックスを選択してから、[保存]を選択します。

パブリック共有のブロック (コマンドライン)

AWS Command Line Interface(AWS CLI) を開く、またはローカルコンピュータの AWS Tools for Windows PowerShellを開き、以下のコマンドを実行してSSM ドキュメントのパブリック共有をブロックします。

Linux & macOS
aws ssm update-service-setting \ --setting-id /ssm/documents/console/public-sharing-permission \ --setting-value Disable \ --region 'The AWS リージョン you want to block public sharing in'
Windows
aws ssm update-service-setting ^ --setting-id /ssm/documents/console/public-sharing-permission ^ --setting-value Disable ^ --region "The AWS リージョン you want to block public sharing in"
PowerShell
Update-SSMServiceSetting ` -SettingId /ssm/documents/console/public-sharing-permission ` -SettingValue Disable ` –Region The AWS リージョン you want to block public sharing in

以下のコマンドで、設定値が更新されたことを確認します。

Linux & macOS
aws ssm get-service-setting \ --setting-id /ssm/documents/console/public-sharing-permission \ --region The AWS リージョン you blocked public sharing in
Windows
aws ssm get-service-setting ^ --setting-id /ssm/documents/console/public-sharing-permission ^ --region "The AWS リージョン you blocked public sharing in"
PowerShell
Get-SSMServiceSetting ` -SettingId /ssm/documents/console/public-sharing-permission ` -Region The AWS リージョン you blocked public sharing in

IAM によるパブリック共有をブロックするためのアクセスの制限

AWS Identity and Access Management (IAM) ポリシーを作成して、ユーザーによるパブリック共有のブロック設定の変更を制限します。これにより、SSM ドキュメントへの不要なアクセスをユーザーが許可できなくなります。

以下は、ユーザーがパブリック共有をブロックする設定を更新できないようにする IAM ポリシーの例です。この例を使用するには、Amazon Web Services のアカウント ID の例を自分のアカウント ID に置き換える必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:UpdateServiceSetting", "Resource": "arn:aws:ssm:*:987654321098:servicesetting/ssm/documents/console/public-sharing-permission" } ] }

SSM ドキュメントを共有する

Systems Manager コンソールを使用して AWS Systems Manager (SSM) ドキュメントを共有できます。コンソールからドキュメントを共有する場合、共有できるのはドキュメントのデフォルトバージョンのみです。また、AWS Command Line Interface (AWS CLI)、AWS Tools for Windows PowerShell、または AWS SDK を使用して、ModifyDocumentPermission API オペレーションを呼び出すことで、プログラムで SSM ドキュメントを共有することもできます。ドキュメントを共有する前に、共有するユーザーの AWS アカウント ID を取得します。ドキュメントを共有する場合に、これらのアカウント ID を指定します。

ドキュメントを共有する (コンソール)

  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[ドキュメント] を選択します。

  3. ドキュメントリストで共有するドキュメントを選択し、[詳細を表示] を選択します。[Permissions] タブで自分がドキュメントの所有者であることを確認します。ドキュメントの所有者のみがドキュメントを共有できます。

  4. [Edit] を選択します。

  5. コマンドをパブリックに共有するには、[Public] を選択し、[Save] を選択します。コマンドをプライベートに共有するには、[Private (プライベート)] を選択し、AWS アカウント ID を入力します。次に、[Add permission (アクセス権限の追加)] を選択し、[Save (保存)] を選択します。

ドキュメントの共有 (コマンドライン)

次の手順では、コマンドラインセッションの AWS リージョン を指定する必要があります。

  1. ローカルコンピュータで AWS CLI または AWS Tools for Windows PowerShell を開き、以下のコマンドを実行して認証情報を指定します。

    次のコマンドで、[Region] (リージョン) をユーザー自身の情報に置き換えます。サポートされている region 値の一覧については、「Amazon Web Services 全般のリファレンス」の「Systems Manager サービスエンドポイント」にある Region 列を参照してください。

    Linux & macOS
    aws config AWS Access Key ID: [your key] AWS Secret Access Key: [your key] Default region name: region Default output format [None]:
    Windows
    aws config AWS Access Key ID: [your key] AWS Secret Access Key: [your key] Default region name: region Default output format [None]:
    PowerShell
    Set-AWSCredentials –AccessKey your key –SecretKey your key Set-DefaultAWSRegion -Region region
  2. 次のコマンドを使用して、使用可能なすべての SSM ドキュメントの一覧を表示します。一覧には、作成したドキュメント、および自分と共有されたドキュメントが含まれます。

    Linux & macOS
    aws ssm list-documents
    Windows
    aws ssm list-documents
    PowerShell
    Get-SSMDocumentList
  3. 特定のドキュメントを取得するには、次のコマンドを使用します。

    Linux & macOS
    aws ssm get-document \ --name document name
    Windows
    aws ssm get-document ^ --name document name
    PowerShell
    Get-SSMDocument ` –Name document name
  4. ドキュメントの説明を表示するには、次のコマンドを使用します。

    Linux & macOS
    aws ssm describe-document \ --name document name
    Windows
    aws ssm describe-document ^ --name document name
    PowerShell
    Get-SSMDocumentDescription ` –Name document name
  5. ドキュメントのアクセス権限を表示するには、次のコマンドを使用します。

    Linux & macOS
    aws ssm describe-document-permission \ --name document name \ --permission-type Share
    Windows
    aws ssm describe-document-permission ^ --name document name ^ --permission-type Share
    PowerShell
    Get-SSMDocumentPermission ` –Name document name ` -PermissionType Share
  6. ドキュメントのアクセス権限を変更して共有するには、次のコマンドを使用します。アクセス権限を編集するには、ドキュメントの所有者である必要があります。オプションで、--shared-document-version パラメータを使用して共有するドキュメントのバージョンを指定できます。バージョンを指定しない場合、ドキュメント の Default バージョンが共有されます。このコマンド例は、そのユーザーの AWS アカウント ID に基づいて、特定の個人とドキュメントをプライベートに共有します。

    Linux & macOS
    aws ssm modify-document-permission \ --name document name \ --permission-type Share \ --account-ids-to-add AWS アカウント ID
    Windows
    aws ssm modify-document-permission ^ --name document name ^ --permission-type Share ^ --account-ids-to-add AWS アカウント ID
    PowerShell
    Edit-SSMDocumentPermission ` –Name document name ` -PermissionType Share ` -AccountIdsToAdd AWS アカウント ID
  7. 次のコマンドを使用してドキュメントをパブリックに共有します。

    Linux & macOS
    aws ssm modify-document-permission \ --name document name \ --permission-type Share \ --account-ids-to-add 'all'
    Windows
    aws ssm modify-document-permission ^ --name document name ^ --permission-type Share ^ --account-ids-to-add "all"
    PowerShell
    Edit-SSMDocumentPermission ` -Name document name ` -PermissionType Share ` -AccountIdsToAdd ('all')

共有 SSM ドキュメントのアクセス許可を変更する

コマンドを共有する場合、AWS Systems Manager (SSM) ドキュメントへのアクセス権を削除するか、SSM ドキュメントを削除するまで、そのコマンドを表示および使用できます。ただし、共有されている限り、ドキュメントを削除することはできません。ドキュメントを削除する前に、共有を停止する必要があります。

ドキュメント共有の停止 (コンソール)

ドキュメント共有の停止
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[ドキュメント] を選択します。

  3. ドキュメントリストで共有を停止するドキュメントを選択し、[詳細] を選択します。[アクセス許可] セクションで自分がドキュメントの所有者であることを確認します。ドキュメントの所有者のみが、ドキュメントの共有を停止できます。

  4. [Edit] を選択します。

  5. [X] を選択してコマンドへのアクセス権を取り消す AWS アカウント ID を削除し、[Save] を選択します。

ドキュメントの共有の停止 (コマンドライン)

ローカルコンピュータで AWS CLI または AWS Tools for Windows PowerShell を開き、次のコマンドを実行してコマンドの共有を停止します。

Linux & macOS
aws ssm modify-document-permission \ --name document name \ --permission-type Share \ --account-ids-to-remove 'AWS アカウント ID'
Windows
aws ssm modify-document-permission ^ --name document name ^ --permission-type Share ^ --account-ids-to-remove "AWS アカウント ID"
PowerShell
Edit-SSMDocumentPermission ` -Name document name ` -PermissionType Share ` –AccountIdsToRemove AWS アカウント ID

共有 SSM ドキュメントを使用する

AWS Systems Manager (SSM) ドキュメントを共有すると、システムは Amazon リソースネーム (ARN) を生成して、コマンドに割り当てます。Systems Manager コンソールから共有ドキュメントを選択して実行する場合、ARN は表示されません。ただし、Systems Manager コンソール以外の方法を使用して共有 SSM ドキュメントを実行する場合は、DocumentName リクエストパラメータにドキュメントの完全な ARN を指定する必要があります。コマンドを実行してドキュメントをリストすると、SSM ドキュメントの完全な ARN が表示されます。

注記

AWS のパブリックドキュメント (先頭に AWS-* が付くドキュメント)、または自己所有のドキュメントに ARN を指定する必要はありません。

共有 SSM ドキュメントを使用する (コマンドライン)

すべてのパブリック SSM ドキュメントをリスト表示するには

Linux & macOS
aws ssm list-documents \ --filters Key=Owner,Values=Public
Windows
aws ssm list-documents ^ --filters Key=Owner,Values=Public
PowerShell
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter $filter.Key = "Owner" $filter.Values = "Public" Get-SSMDocumentList ` -Filters @($filter)

自分と共有されているプライベート SSM ドキュメントをリスト表示するには

Linux & macOS
aws ssm list-documents \ --filters Key=Owner,Values=Private
Windows
aws ssm list-documents ^ --filters Key=Owner,Values=Private
PowerShell
$filter = New-Object Amazon.SimpleSystemsManagement.Model.DocumentKeyValuesFilter $filter.Key = "Owner" $filter.Values = "Private" Get-SSMDocumentList ` -Filters @($filter)

使用できるすべての SSM ドキュメントをリスト表示するには

Linux & macOS
aws ssm list-documents
Windows
aws ssm list-documents
PowerShell
Get-SSMDocumentList

自分と共有されている SSM ドキュメントについての情報を入手するには

Linux & macOS
aws ssm describe-document \ --name arn:aws:ssm:us-east-2:12345678912:document/documentName
Windows
aws ssm describe-document ^ --name arn:aws:ssm:us-east-2:12345678912:document/documentName
PowerShell
Get-SSMDocumentDescription ` –Name arn:aws:ssm:us-east-2:12345678912:document/documentName

共有 SSM ドキュメントを実行するには

Linux & macOS
aws ssm send-command \ --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName \ --instance-ids ID
Windows
aws ssm send-command ^ --document-name arn:aws:ssm:us-east-2:12345678912:document/documentName ^ --instance-ids ID
PowerShell
Send-SSMCommand ` –DocumentName arn:aws:ssm:us-east-2:12345678912:document/documentName ` –InstanceIds ID