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

步骤 2:为混合环境创建 IAM 服务角色

混合环境中的服务器和虚拟机 (VM) 需要使用 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 服务,具体取决于您的使用案例。例如,如果无法访问所需的 Amazon 托管式 Amazon Simple Storage Service (Amazon S3) 存储桶,Patch Manager 修补操作将会失败。

创建 服务角色(控制台)

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

  3. 标记以下选择:

    1. Select type of trusted entity (选择受信任实体的类型) 区域:Amazon 服务

    2. Choose the service that will use this role (选择将使用此角色的服务) 区域:Systems Manager

  4. 选择 Next (下一步)

  5. 在策略列表中,选中 AmazonSSMMaintenanceWindowRole 旁边的复选框,然后选择 Next(下一步)。

  6. Role name(角色名称)中,输入用于将此角色标识为混合激活服务角色的名称。例如:my-hybrid-service-role

  7. (可选)添加一个或多个标签键值对,以组织、跟踪或控制此角色的访问,然后选择 Next: Review (下一步:审核)

  8. (可选)更改默认角色描述,以反映此角色的用途。例如:Provides permissions for on-premises machines

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

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

使用以下过程为混合激活创建服务角色。请注意,此过程使用适用于 Systems Manager 核心功能的 AmazonSSMManagedInstanceCore 策略。您可能需要向服务角色添加其他策略,以便本地计算机能够访问其他功能或 Amazon 服务,具体取决于您的使用案例。

S3 存储桶策略要求

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

  • 情况 1:您使用 VPC 端点将 VPC 私下连接到支持的 Amazon 服务以及 Amazon PrivateLink 支持的 VPC 端点服务。

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

Amazon CLI

要为混合环境创建 IAM 服务角色 (Amazon CLI),请执行以下步骤:

  1. 安装并配置 Amazon Command Line Interface (Amazon CLI)(如果尚未执行该操作)。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具.

  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 创建 IAM 实例配置文件

    (必需)运行以下命令以允许托管实例使用 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(如果尚未执行该操作)。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具.

  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. 在管理模式下打开 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 创建 IAM 实例配置文件

    (必需)运行以下命令以允许托管实例使用 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

继续浏览 步骤 3:为混合环境创建托管式实例激活