步骤 1:为混合和多云环境创建 IAM 服务角色 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

步骤 1:为混合和多云环境创建 IAM 服务角色

混合和多云环境中的非 EC2(Amazon Elastic Compute Cloud)计算机需要一个 Amazon Identity and Access Management(IAM)服务角色才能与 Amazon Systems Manager 服务通信。此角色向 Amazon Security Token Service (Amazon STS) AssumeRole 授予对 Systems Manager 服务的信任。对于混合和多云环境,您只需为每个 Amazon Web Services 账户 创建一次服务角色。但如果混合和多云环境中的计算机需要不同的权限,则可以选择为不同的混合激活创建多个服务角色。

以下过程介绍如何使用 Systems Manager 控制台或首选命令行工具来创建所需的服务角色。

创建 IAM 服务角色(控制台)

使用以下过程为混合激活创建服务角色。此过程使用 Systems Manager 核心功能的 AmazonSSMManagedInstanceCore 策略。您可能需要向服务角色添加其他策略,以便本地计算机能够访问其他功能或 Amazon Web Services,具体取决于您的应用场景。例如,如果无法访问所需的 Amazon 托管式 Amazon Simple Storage Service (Amazon S3) 存储桶,Patch Manager 修补操作将会失败。

创建服务角色(控制台)
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 对于 Select trusted entity(选择可信实体),完成以下选择:

    1. 对于 Trusted entity type(可信实体类型),选择 Amazon Web Service

    2. 对于其他 Amazon Web Services 的应用场景,请选择 Systems Manager

    3. 选择 Systems Manager

  4. 选择下一步

  5. Add permissions(添加权限)页面上,请执行以下操作:

    • 使用搜索字段查找 AmazonSSMManagedInstanceCore 策略。选中其名称旁边的复选框。

      在 IAM 控制台中选择的 EC2 服务的策略。
    • 即使您搜索其他策略,控制台也会保留您选择的内容。

    • 如果您在过程 (可选)为 S3 存储桶访问创建自定义策略 中创建了自定义 S3 存储桶策略,请搜索该策略并选中其名称旁边的复选框。

    • 如果您打算将非 EC2 计算机加入 Amazon Directory Service 管理的 Active Directory,请搜索 AmazonSSMDirectoryServiceAccess 并选中其名称旁边的复选框。

    • 如果您打算使用 Eventbridge 或 CloudWatch Logs 来管理或监控您的托管节点,请搜索 CloudWatchAgentServerPolicy 并选中其名称旁边的复选框。

  6. 选择下一步

  7. 对于角色名称,请为新的 IAM 服务器角色输入名称,例如 SSMServerRole

    注意

    记下角色名称。在注册希望使用 Systems Manager 进行管理的新计算机时,将选择该角色。

  8. (可选)对于描述,请更新该 IAM 服务器角色的描述。

  9. (可选)在 Tags(标签)中添加一个或多个标签密钥值对,以组织、跟踪或控制此角色的访问权限。

  10. 选择 Create role (创建角色)。系统将让您返回到 角色 页面。

创建 IAM 服务角色(命令行)

使用以下过程为混合激活创建服务角色。此过程使用 Systems Manager 核心功能的 AmazonSSMManagedInstanceCore 策略。您可能需要向服务角色添加其他策略,以便混合和多云环境种的非 EC2 计算机能够访问其他功能或 Amazon Web Services,具体取决于您的应用场景。

S3 存储桶策略要求

如果出现以下任一情况,您必须在完成此过程之前为 Amazon Simple Storage Service (Amazon S3) 存储桶创建自定义 IAM 权限策略:

  • 情况 1:您通过一个 VPC 端点以私有方式将您的 VPC 连接到受支持的 Amazon Web Services,以及由 Amazon PrivateLink 提供支持的 VPC 端点服务。

  • 情况 2 - 您计划使用在 Systems Manager 操作期间创建的 Amazon S3 存储桶,如将 Run Command 命令或 Session Manager 会话的输出存储到 S3 存储桶中。在继续之前,请按照为实例配置文件创建自定义 S3 存储桶策略中的步骤进行操作。该主题中有关 S3 存储桶策略的信息也适用于服务角色。

Amazon CLI
为混合和多云环境创建 IAM 服务角色(Amazon CLI)
  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未执行该操作)。

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本

  2. 在本地计算机上使用以下信任策略创建一个文本文件,文件名称类似于 SSMService-Trust.json。确保使用 .json 文件扩展名保存该文件。请务必指定您在其中创建混合激活的 ARN 中的 Amazon Web Services 账户 和 Amazon Web Services 区域。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnEquals":{ "aws:SourceArn":"arn:aws:ssm:us-east-2:123456789012:*" } } } ] }
  3. 打开 Amazon CLI,在创建该 JSON 文件的目录下,运行 create-role 命令以创建服务角色。该示例创建一个名为 SSMServiceRole 的角色。如果愿意,您也可以选择其他名称。

    Linux & macOSWindows
    Linux & macOS
    aws iam create-role \ --role-name SSMServiceRole \ --assume-role-policy-document file://SSMService-Trust.json
    Windows
    aws iam create-role ^ --role-name SSMServiceRole ^ --assume-role-policy-document file://SSMService-Trust.json
  4. 按如下方式运行 attach-role-policy 命令,以允许您刚创建的服务角色创建会话令牌。此会话令牌向托管节点授予使用 Systems Manager 运行命令的权限。

    注意

    您为混合和多云环境中托管式节点的服务配置文件添加的策略与用于为 Amazon Elastic Compute Cloud(Amazon EC2)实例创建实例配置文件的策略相同。有关以下命令中使用的 Amazon 策略的更多信息,请参阅为 Systems Manager 配置实例权限

    (必需)运行以下命令以允许托管节点使用 Amazon Systems Manager 服务核心功能。

    Linux & macOSWindows
    Linux & macOS
    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
    Windows
    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    如果为服务角色创建了自定义 S3 存储桶策略,请运行以下命令,以允许 Amazon Systems Manager Agent (SSM Agent) 访问在该策略中指定的存储桶。将 account-idmy-bucket-policy-name 替换为您的 Amazon Web Services 账户 ID 和存储桶名称。

    Linux & macOSWindows
    Linux & macOS
    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::account-id:policy/my-bucket-policy-name
    Windows
    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::account-id:policy/my-bucket-policy-name

    (可选)运行以下命令以允许 SSM Agent 代表您访问 Amazon Directory Service,以处理托管节点加入域的请求。只有在将节点加入 Microsoft AD 目录时,服务角色才需要使用此策略。

    Linux & macOSWindows
    Linux & macOS
    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess
    Windows
    aws iam attach-role-policy ^ --role-name SSMServiceRole ^ --policy-arn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    (可选)运行以下命令以允许 CloudWatch 代理在托管式节点上运行。通过使用此命令,可以读取节点上的信息并将其写入 CloudWatch。仅当要使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等服务时,服务配置文件才需要使用该策略。

    aws iam attach-role-policy \ --role-name SSMServiceRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Tools for PowerShell
为混合和多云环境创建 IAM 服务角色(Amazon Tools for Windows PowerShell)
  1. 如果您尚未安装和配置 Amazon Tools for PowerShell(适用于 Windows PowerShell 的工具),请执行这些操作。

    有关信息,请参阅安装 Amazon Tools for PowerShell

  2. 在本地计算机上使用以下信任策略创建一个文本文件,文件名称类似于 SSMService-Trust.json。确保使用 .json 文件扩展名保存该文件。请务必指定您在其中创建混合激活的 ARN 中的 Amazon Web Services 账户 和 Amazon Web Services 区域。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnEquals":{ "aws:SourceArn":"arn:aws:ssm:region:123456789012:*" } } } ] }
  3. 在管理模式下打开 PowerShell,在创建此 JSON 文件的目录中,按如下方式运行 New-IAMRole 以创建服务角色。该示例创建一个名为 SSMServiceRole 的角色。如果愿意,您也可以选择其他名称。

    New-IAMRole ` -RoleName SSMServiceRole ` -AssumeRolePolicyDocument (Get-Content -raw SSMService-Trust.json)
  4. 按如下方式使用 Register-IAMRolePolicy,以允许您创建的服务角色创建会话令牌。此会话令牌向托管节点授予使用 Systems Manager 运行命令的权限。

    注意

    您为混合和多云环境中托管式节点的服务配置文件添加的策略与用于为 EC2 实例创建实例配置文件的策略相同。有关以下命令中使用的 Amazon 策略的更多信息,请参阅为 Systems Manager 配置实例权限

    (必需)运行以下命令以允许托管节点使用 Amazon Systems Manager 服务核心功能。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

    如果为服务角色创建了自定义 S3 存储桶策略,请运行以下命令,以允许 SSM Agent 访问在该策略中指定的存储桶。将 account-idmy-bucket-policy-name 替换为您的 Amazon Web Services 账户 ID 和存储桶名称。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::account-id:policy/my-bucket-policy-name

    (可选)运行以下命令以允许 SSM Agent 代表您访问 Amazon Directory Service,以处理托管节点加入域的请求。只有在将节点加入 Microsoft AD 目录时,服务器角色才需要此策略。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess

    (可选)运行以下命令以允许 CloudWatch 代理在托管式节点上运行。通过使用此命令,可以读取节点上的信息并将其写入 CloudWatch。仅当要使用 Amazon EventBridge 或 Amazon CloudWatch Logs 等服务时,服务配置文件才需要使用该策略。

    Register-IAMRolePolicy ` -RoleName SSMServiceRole ` -PolicyArn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

继续步骤 2:为混合和多云环境创建混合激活