共用 SSM 文件 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

共用 SSM 文件

您可以使用同 AWS 區域一帳戶私下或公開共用 AWS Systems Manager (SSM) 文件。若要私下共用文件,您需要修改文件許可,並根據特定人員的 AWS 帳戶 ID 允許其進行存取。若要公開共用 SSM 文件,請修改文件許可並指定 All。文件不能同時公開和私下共用。

警告

只能使用受信任來源的共用 SSM 文件。當您使用任何共用文件,請在使用文件之前仔細檢視文件的內容,讓您了解文件將會如何改變您執行個體的組態。如需共用文件的最佳實務詳細資訊,請參閱 共用 SSM 文件的最佳實務

限制

當您開始使用 SSM 文件時,請注意以下限制。

  • 只有文件擁有者可以分享文件。

  • 您必須停止共用文件,才能刪除文件。如需詳細資訊,請參閱 修改共用 SSM 文件的許可

  • 您最多可以共用 1000 個文件 AWS 帳戶。您可以在 AWS Support 中心請求提高此限制。對於 Limit type (限制類型),選擇 EC2 Systems Manager 並說明請求的原因。

  • 您最多可以公開共用五個 SSM 文件。您可以在 AWS Support 中心請求提高此限制。對於 Limit type (限制類型),選擇 EC2 Systems Manager 並說明請求的原因。

  • 文檔只能與其他帳戶共 AWS 區域 享。不支援跨區域共用。

如需有關 Systems Manager 服務配額的詳細資訊,請參閱 AWS Systems Manager Service Quotas

共用 SSM 文件的最佳實務

共享或使用共用文件之前,請檢閱下列指導方針。

移除敏感的資訊

仔細檢閱您的 AWS Systems Manager (SSM) 文件,並移除任何敏感資訊。例如,確認文件未包含您的認 AWS 證。如果您與特定個人共享文件,這些使用者可以檢視文件中的資訊。如果您將文件設定為公開,任何使用者可以檢視文件中的資訊。

封鎖文件的公有共用

除非您的使用案例需要開啟公有共用,否則建議您在 Systems Manager 文件主控台的 Preferences (偏好設定) 區段中開啟 Systems Manager 文件的封鎖公有共用設定。

使用 IAM 信任政策來限制 Run Command 動作

為可存取文件的使用者建立限制性 AWS Identity and Access Management (IAM) 政策。IAM 政策會決定使用者可以在 Amazon Elastic Compute Cloud (Amazon EC2) 主控台中查看哪些 SSM 文件,或ListDocuments使用 AWS Command Line Interface (AWS CLI) 或 AWS Tools for Windows PowerShell呼叫。此政策也限制使用者在 SSM 文件上可執行哪些動作。您可以建立嚴格的政策,讓使用者只能使用特定的文件。如需詳細資訊,請參閱 客戶受管政策範例

請小心使用共用的 SSM 文件

檢閱每個與您共享的文件內容,特別是公有文件。了解那些將在您的執行個體上執行的指令。文件執行後可能會有意或無意地產生負面影響。如果文件參考外部網路、先檢閱外部來源,然後再使用文件。

使用文件雜湊來傳送命令

當您共用文件,系統會建立一個 SHA-256 雜湊並將其指派給文件。系統還會儲存文件內容的快照。當您使用共用文件來傳送命令,您可以在您的命令中指定雜湊以確保以下條件為真:

  • 您正在執行正確的 Systems Manager 文件的命令

  • 自從與您共用文件後,文件內容尚未變更。

如果雜湊不符合指定的文件或者如果共用文件的內容被更改過,命令會傳回 InvalidDocument 的錯誤例外訊息。雜湊無法從外部位置驗證文件的內容。

封鎖 SSM 文件的公有共用

除非您的使用案例需要開啟公開共用功能,否則我們建議您開啟 AWS Systems Manager (SSM) 文件的封鎖公用共用設定。開啟此設定可避免 SSM 文件遭到不必要的存取。封鎖公開共用設定是帳戶層級設定,每個設定可能會有所不同 AWS 區域。完成下列任務以封鎖 SSM 文件的公有共用。

封鎖公有共用 (主控台)

若要封鎖 SSM 文件的公有共用
  1. 請在以下位置開啟 AWS Systems Manager 主控台。 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Documents (文件)

    -或-

    如果 AWS Systems Manager 首頁首頁開啟,請選擇功能表圖示 ( 
    The menu icon
  ) 以開啟導覽窗格,然後在導覽窗格中選擇 [文件]。

  3. 選擇 Preferences (偏好設定),然後在 Block public sharing (封鎖公有共用) 區段中選擇 Edit (編輯)。

  4. 選取 Block public sharing (封鎖公有共用) 核取方塊,再選擇 Save (儲存)。

封鎖公有共用 (命令列)

開啟 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 政策範例。若要使用此範例,您必須用您自己的帳戶 ID 取代範例 Amazon Web Services 帳戶 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. 在導覽窗格中,選擇 Documents (文件)

    -或-

    如果 AWS Systems Manager 首頁首頁開啟,請選擇功能表圖示 ( 
    The menu icon
  ) 以開啟導覽窗格,然後在導覽窗格中選擇 [文件]。

  3. 在文件清單中,選擇要共享的文件,然後選擇 View details (查看詳細資訊)。在 Permissions (許可) 索引標籤中,驗證您是文件的擁有者。只有文件擁有者可以分享文件。

  4. 選擇編輯

  5. 若要公開共享命令,選擇 Public (公有),然後選擇 Save (儲存)。若要私下共用命令,選擇 Private (私有),輸入 AWS 帳戶 ID,選擇 Add permission (新增許可),然後選擇 Save (儲存)。

分享文件 (命令列)

下列程序要求您 AWS 區域 為指令行階段作業指定一個。

  1. AWS Tools for Windows PowerShell 在您的本機電腦上開啟 AWS CLI 或,然後執行下列命令來指定您的認證。

    在下列命令中,用您自己的資訊取代 region (區域)。如需支援的 region 值的清單,請參閱《Amazon Web Services 一般參考》Systems Manager 服務端點一節的區域資料欄。

    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. 在導覽窗格中,選擇 Documents (文件)

    -或-

    如果 AWS Systems Manager 首頁首頁開啟,請選擇功能表圖示 ( 
    The menu icon
  ) 以開啟導覽窗格,然後在導覽窗格中選擇 [文件]。

  3. 在文件清單中,選擇您要停止共用的文件,然後選擇 [詳細資料]。在「權限」區段中,確認您是文件擁有者。只有文件擁有者可以停止共享文件。

  4. 選擇編輯

  5. 選擇 X 以刪除不應再具有指令存取權的 AWS 帳戶 ID,然後選擇 [儲存]。

停止分享文件 (命令列)

AWS Tools for Windows PowerShell 在您的本機電腦上開啟 AWS CLI 或,然後執行下列命令以停止共用命令。

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