AWS Identity and Access Management (IAM)

集成版本:5.0

使用情形 - 使用 Amazon Simple Storage Service (Amazon S3)

John 为公司创建了一个名为 aws-s3-bucket 的 Amazon S3 存储桶。

  1. 创建用户(开发者需要在公司存储桶中创建自己的数据)
    1. 创建群组(以开发者为群组)
  2. 创建政策(John 需要向用户/群组分配权限)
  3. 附加政策(John 向该群组附加了一项政策,允许开发者在 AWS S3 中读取、写入和列出对象)
  4. 添加/移除群组中的用户(某位开发者成为经理,访问权限应发生变化)

在 Google Security Operations 中配置 AWS Identity and Access Management (IAM) 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 是否为必需属性 说明
AWS 访问密钥 ID 字符串 不适用 要在集成中使用的 AWS 访问密钥 ID。
AWS 密钥 密码 不适用 要在集成中使用的 AWS 密钥。

操作

Ping

说明

使用 Google Security Operations Marketplace 标签页中集成配置页面上提供的参数,测试与 AWS IAM 的连接。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果成功:输出“Successfully connected to the AWS IAM server with the provided connection parameters!”

操作应失败并停止 playbook 执行

如果未成功:打印“Failed to connect to the AWS IAM server!错误为 {0}".format(exception.stacktrace)

常规

创建用户

说明

为您的 AWS 账号创建新的 IAM 用户。您可以使用逗号分隔值一次添加多位用户。请注意,在此阶段不会应用任何政策。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
用户名 字符串 不适用 要创建的用户的名称。以英文逗号分隔的值。注意:用户名不得包含空格,只能包含字母数字字符和/或以下字符:+=.@_-。名称在账号中必须是唯一的。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
[{
   "Arn":"arn:aws:iam::582302349248:user/ziv",
   "CreateDate":"2020-12-03T12:12:20",
   "Path":"/",
   "UserId":"AIDAYPE7MW7AFMHK4WCHS",
   "UserName":"ziv"
}]
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功(只有少数用户名有效):打印“已成功将以下用户添加到 IAM:<用户名>”
  • 如果出现错误 - 用户已存在:打印“无法将以下用户添加到 IAM:<用户名>。一个账号中的名称必须是唯一的。
  • 如果出现错误(部分用户名无效):打印“无法将以下用户添加到 IAM:<用户名>。用户名必须仅包含字母数字字符和/或以下字符:+=,.@-.
  • 如果出现错误(提高限制。每个账号最多 5000 个用户):打印“Could not add the following users to IAM: <Usernames>. Reach to Users limitation in your aws account.

注意:如果没有任何变化:所有用户均无效/存在/达到上限 → 操作应失败

操作应失败并停止 playbook 执行

  • 如果不成功(所有用户名均无效、凭据错误、无连接、其他错误):打印“执行操作‘创建用户’时出错。原因:{exception.stacktrace}

注意:如果所有用户名都无效,请打印“Error executing action 'Create a User'. 原因:{invalid usernames}:用户名只能包含字母数字字符和/或以下字符:+=,.@-. {existing usernames}:名称在账号中必须是唯一的。

常规

向群组添加用户

说明

将指定用户添加到指定 IAM 群组。使用群组可同时向多位用户应用相同的权限政策。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
组名称 字符串 不适用 要更新的群组的名称。注意:群组名称不能包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-。
用户名 字符串 不适用 要添加的用户的名称。注意:用户名不得包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-。以英文逗号分隔的值。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“已成功将用户 <User name> 添加到 IAM 群组:<Group name>”
  • 如果出现错误 - 群组不存在和/或用户不存在
    群组不存在 输出“无法将 <UserName> 添加到 <Group name>。找不到群组 <group name>。”
    用户不存在/两者都不存在:输出“无法将 <UserName> 添加到 <Group name>。找不到用户 <user name>。”
  • 如果出现错误
    用户限制 - IAM 用户最多可加入 10 个群组
    群组限制 - 一个群组最多可包含 5,000 个用户
    打印“无法将 <UserName> 添加到 <Group name>,因为尝试创建的资源超出了当前 AWS 账号的限制。”

操作应失败并停止 playbook 执行

  • 如果不成功(凭据错误、无连接、其他 SDK 错误):打印“执行操作‘将用户添加到群组’时出错。原因:{exception.stacktrace}
常规

从群组中移除用户

说明

将指定用户添加到指定 IAM 群组。使用群组可同时向多位用户应用相同的权限政策。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
组名称 字符串 不适用 要更新的群组的名称。注意:群组名称不能包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-。
用户名 字符串 不适用 要移除的用户的名称。注意:用户名不得包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-。以英文逗号分隔的值。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“<User name>已从群组<Group name>中移除”
  • 如果出现错误 - 群组不存在或/且用户不存在
    群组不存在 打印“无法从 <Group name> 中移除 <UserName>。找不到群组 <group name>。
    用户不存在/两者都不存在:打印“无法从 <Group name> 中移除 <UserName>。找不到用户 <user name>。
  • 如果出现错误
    用户限制 - IAM 用户最多可加入 10 个群组
    群组限制 - 一个群组最多可包含 5,000 个用户
    打印“无法从 <Group name> 中移除 <UserName>,因为尝试创建的资源超出了当前 AWS 账号的限制。”

操作应失败并停止 playbook 执行

  • 如果未成功(凭据错误、无连接、其他 SDK 错误):打印“Error executing action 'Remove a User from a Group. 原因:{exception.stacktrace}
常规

列出用户

说明

获取 IAM 中所有用户的列表。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
要返回的最大用户数 整数 50 指定要返回的用户数量。最多 1000 位用户。默认值为 50。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
[{
   "Arn":"arn:aws:iam::582302349248:user/ziv",
   "CreateDate":"2020-12-03T12:12:20",
   "Path":"/",
   "UserId":"AIDAYPE7MW7AFMHK4WCHS",
   "UserName":"ziv"
}]
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果成功:打印“Successfully listed available users in AWS IAM”

如果没有可用数据:打印“No users found in AWS IAM”(未在 AWS IAM 中找到用户)


操作应失败并停止 playbook 执行

如果不成功(凭据错误、无法连接到服务器、其他服务器错误,如果 max>10000):打印“执行操作‘列出用户’时出错。原因:{exception.stacktrace}

常规
CSV 表格

Title: IAM 用户

用户名

用户 ID

ARN

创建日期

常规

列出群组

说明

获取 IAM 中所有群组的列表。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
要返回的群组数量上限 整数 50 指定要返回的群组数量。最多 1000 个群组。默认值为 50。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
[{
   "Arn":"arn:aws:iam::582302349248:group/ZivGroup",
   "CreateDate":"2020-12-05 16:18:36+00:00",
   "Path":"/",
   "GroupId":"AGPAYPE7MW7AMKCWMJPMX",
   "GroupName":"ZivGroup"
}]
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

如果成功:打印“Successfully listed available groups in AWS IAM”(已成功列出 AWS IAM 中的可用群组)

如果没有可用数据:打印“No Groups found in AWS IAM”


操作应失败并停止 playbook 执行

如果不成功(凭据错误、无法连接到服务器、其他服务器错误,如果“Max Groups”> 1000):打印“Error executing action 'List Groups'. 原因:{exception.stacktrace}

常规
CSV 表格

Title: IAM 群组

群组名称

群组 ID

ARN

创建日期

常规

创建政策

说明

为您的 AWS 账号创建 IAM 客户管理式政策。此操作会创建一个版本标识符为 v1 的政策版本,并将 v1 设置为政策的默认版本。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
政策名称 字符串 不适用 要创建的政策的名称。政策名称不得包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-。政策名称在账号中必须是唯一的。
政策文档 字符串 不适用 您要用作新政策内容的 JSON 政策文档。
说明 字符串 不适用 政策的说明。通常用于存储有关政策中定义的权限的信息。例如,“授予对生产 DynamoDB 表的访问权限”。政策说明不可变。分配值后,便无法更改。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
    "PolicyName": "S3-read-only-bucket",
    "PolicyId": "ANPAYPE7MW7AFKUDK3HD7",
    "Arn": "arn:aws:iam::582302349248:policy/S3-read-only-bucket",
    "Path": "/",
    "DefaultVersionId": "v1",
    "AttachmentCount": 0,
    "PermissionsBoundaryUsageCount": 0,
    "IsAttachable": true,
    "CreateDate": "2020-12-6T17:16:45",
    "UpdateDate": "2020-12-6T17:16:45"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“已成功创建 <政策名称> 政策”

该操作应失败并停止 playbook 执行:

  • 如果出现错误 - 政策已存在:打印“无法创建 <policy name> 政策。政策名称在账号中必须是唯一的。
  • 如果出现错误 - 政策名称无效:打印“无法创建 <政策名称> 政策。政策名称只能包含字母数字字符和/或以下字符:+=,.@_-.
  • 如果出现错误 - 政策文档格式有误:打印“Could not create <policy name> policy. 政策文档格式有误。原因:{exception.stacktrace}

如果不成功(LimitExceededException、凭据错误、无连接、其他错误):打印“执行操作‘创建政策’时出错。原因:{exception.stacktrace}

常规

创建群组

说明

为您的 AWS 账号创建新的 IAM 群组。如需设置群组,您需要创建群组。然后,根据您希望群组中的用户执行的工作类型,为该群组授予权限。最后,将用户添加到该群组。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
组名称 字符串 不适用 要创建的群组的名称。以英文逗号分隔的值。注意:群组名称不能包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-。名称在账号中必须是唯一的。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
[{
   "Arn":"arn:aws:iam::582302349248:group/ZivGroup",
   "CreateDate":"2020-12-05 16:18:36+00:00",
   "Path":"/",
   "GroupId":"'AGPAYPE7MW7AMKCWMJPMX",
   "GroupName":"ZivGroup"
}]
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功(部分/所有群组名称有效):打印“已成功将以下群组添加到 IAM:<群组名称>”
  • 如果出现错误 - 群组已存在:打印“无法将以下群组添加到 IAM:<群组名称>。名称在账号中必须是唯一的。
  • 如果出现错误(部分群组名称无效):打印“无法将以下群组添加到 IAM:<群组名称>。群组名称只能包含字母数字字符和/或以下字符:+=,.@_-。”
  • 如果出现错误(提高限制。每个账号最多 500 个群组):打印“无法将以下群组添加到 IAM:<群组名称>。您的 AWS 账号已达到群组数量限制。


操作应失败并停止 playbook 执行

  • 如果不成功(所有名称都无效、凭据错误、没有连接、其他错误):打印“Error executing action 'Create a Group. 原因:{exception.stacktrace}
常规

列出政策

说明

列出您的 AWS 账号中可用的所有管理式政策,包括您自己定义的客户管理式政策和所有 AWS 管理式政策。您可以使用可选的“仅限已附加”“范围”和“政策使用情况”参数过滤返回的政策列表。例如,如需仅列出 AWS 账号中的客户管理型政策,请将“范围”设置为“本地”。如需仅列出 AWS 托管式政策,请将 Scope 设置为 AWS。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
仅限已附加 布尔值 勾选后,系统会将结果过滤为仅显示附加到 IAM 用户、群组或角色的政策。如果未勾选,则返回所有政策。
范围

DDL
(全部、AWS、本地)

全部 用于过滤结果的范围。如需仅列出 AWS 托管式政策,请将“范围”设置为“AWS”。如需仅列出 AWS 账号中的客户管理式政策,请将“范围”设置为“本地”。默认情况下,系统会返回所有政策。
要返回的政策数量上限 整数 100 指定要返回的政策数量。默认值为 100。最大值为 1000。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
[{
'PolicyName': 'string',
'PolicyId': 'string',
'Arn': 'string',
'Path': 'string',
'DefaultVersionId': 'string',
'AttachmentCount': 123,
'PermissionsBoundaryUsageCount': 123,
'IsAttachable': True|False,
'Description': 'string',
'CreateDate': "2020-12-6T17:16:45",
'UpdateDate':"2020-12-6T17:16:45"
}]
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“Successfully listed available policies in AWS IAM”(已成功列出 AWS IAM 中的可用政策)
  • 如果“Max Policies”值小于基于过滤条件匹配的政策:打印“Successfully listed available policies in AWS IAM. 请注意,还有其他政策与所提供的过滤条件相符。”
  • 如果没有数据:打印“No Policies were found in AWS IAM”


操作应失败并停止 playbook 执行

  • 如果未成功(凭据错误、无法连接到服务器、其他服务器错误、最大值 > 1000):打印“Error executing action 'List Policies. 原因:{exception.stacktrace}
常规
CSV 表格

标题:IAM 政策

政策名称

政策 ID

创建日期

更新日期

常规

附加政策

说明

将指定的托管式政策附加到身份(用户、群组、角色)。

参数

参数显示名称 类型 默认值 是否为必需属性 说明
身份类型

DDL
(用户、群组、角色)

群组 IAM 身份类型。
身份名称 字符串 不适用 要附加政策的身份的名称(易记名称,而非 ARN)。身份名称不得包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-.
政策名称 字符串 不适用 要附加政策的政策的名称(友好名称,而非 ARN)。政策名称不得包含空格,并且只能包含字母数字字符和/或以下字符:+=.@_-.

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“Policy was attached to <Identity Type>: <Identity Name>”(政策已附加到 <身份类型>: <身份名称>)

操作应失败并停止 playbook 执行

  • 如果出现错误:打印“Could not create <policy name> policy. 政策名称在账号中必须是唯一的。
  • 如果出现错误 - 身份名称无效:打印“无法将 <政策名称> 附加到 <身份类型>:<身份名称>。名称只能包含字母数字字符和/或以下字符:+=,.@_-。
  • 如果未成功(凭据错误、无法连接到服务器、其他服务器错误):打印“Error executing action 'Attach a Policy'. 原因:{exception.stacktrace}
常规

停用用户访问权限

通过添加明确的内嵌拒绝政策,在 AWS 中停用用户访问权限。

此操作仅支持常规 AWS 用户,不支持联合身份用户或 IAM 角色。

实体

此操作在 User 实体上运行。

操作输入

不适用

操作输出

操作输出类型
案例墙附件 不适用
案例墙链接 不适用
“支持请求墙”表格 不适用
丰富化表 不适用
JSON 结果 可用
脚本结果 可用
JSON 结果
[
  {
    "Entity": "//iam.googleapis.com/projects/example/serviceAccounts/service-account@example.iam.gserviceaccount.com",
    "EntityResult": [
      {
        "fullResourceName": "//iam.googleapis.com/projects/example/serviceAccounts/service-account@example.iam.gserviceaccount.com",
        "activityType": "serviceAccountLastAuthentication",
        "observationPeriod": {
          "startTime": "2023-05-23T07:00:00Z",
          "endTime": "2023-08-20T07:00:00Z"
        },
        "activity": {
          "lastAuthenticatedTime": "2023-08-20T07:00:00Z",
          "serviceAccount": {
            "serviceAccountId": "example-account-id",
            "projectNumber": "example-project-id",
            "fullResourceName": "//iam.googleapis.com/projects/example/serviceAccounts/service-account@example.iam.gserviceaccount.com"
          }
        }
      }
    ]
  }
]
脚本结果
脚本结果名称
is_success True/False
案例墙

该操作会提供以下输出消息:

输出消息 消息说明

Successfully added deny policy to the following users in AWS IAM: USERNAME_LIST

Action wasn't able to find the following users in AWS IAM: USERNAME_LIST

Action wasn't able to add deny policy to the following users in AWS IAM: USERNAME_LIST

操作成功。
Successfully added deny policy to the following users in AWS IAM: USERNAME_LIST

操作失败。

错误阻止了将拒绝政策应用于至少一个所提供的用户。

Error executing action "Disable User Access". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。