Amazon Health 基于身份的策略示例 - Amazon Health
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Health 基于身份的策略示例

预设情况下,IAM 用户和角色没有创建或修改 Amazon Health 资源的权限。它们还无法使用 Amazon Web Services Management Console、Amazon CLI 或 Amazon API 执行任务。IAM 管理员必须创建 IAM 策略,以便为用户和角色授予权限以对所需的指定资源执行特定的 API 操作。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。

要了解如何使用这些示例 JSON 策略文档创建 IAM 基于身份的策略,请参阅 IAM 用户指南 中的在 JSON 选项卡上创建策略

策略最佳实践

基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 Amazon Health 资源。这些操作可能会使 Amazon Web Services 账户 产生成本。创建或编辑基于身份的策略时,请遵循以下准则和建议:

  • 开始使用 Amazon 托管式策略 – 要快速开始使用 Amazon Health,请使用 Amazon 托管式策略,为您的员工提供他们所需的权限。这些策略已在您的账户中提供,并由 Amazon 维护和更新。有关更多信息,请参阅 IAM 用户指南中的开始使用 Amazon 托管式策略中的权限

  • 授予最低权限 – 创建自定义策略时,仅授予执行任务所需的许可。最开始只授予最低权限,然后根据需要授予其它权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。有关更多信息,请参阅 IAM 用户指南 中的授予最低权限

  • 为敏感操作启用 MFA – 为增强安全性,要求 IAM 用户使用多重身份验证 (MFA) 来访问敏感资源或 API 操作。要了解更多信息,请参阅《IAM 用户指南》中的在 Amazon 中使用多重身份验证 (MFA)

  • 使用策略条件来增强安全性 – 在切实可行的范围内,定义基于身份的策略在哪些情况下允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件,以便仅允许指定日期或时间范围内的请求,或者要求使用 SSL 或 MFA。有关更多信息,请参阅 。IAM JSON 策略元素:Condition中的IAM 用户指南.

使用 Amazon Health 控制台

要访问 Amazon Health 控制台,您必须拥有一组最低的权限。这些权限必须允许您列出和查看有关您的 Amazon 账户中的 Amazon Health 资源的详细信息。如果您创建的基于身份的策略比所需的最低权限更严格,则无法为具有该策略的实体(IAM 用户或角色)正常运行控制台。

要确保这些实体仍可使用Amazon Health控制台,您可以附加以下内容:Amazon托管策略,AWSHealthFullAccess.

这些区域有:AWSHealthFullAccess策略授予实体对以下内容的完全访问权限:

  • 启用或禁用Amazon Health适用于中所有账户的组织视图功能Amazon组织

  • 这些区域有:Amazon Health Dashboard中的Amazon Health控制台

  • Amazon Health API 操作和通知

  • 查看属于您的账户的相关信息Amazon组织

  • 查看管理账户的组织单位 (OU)

例 : AWSHealthFullAccess

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringEquals": { "organizations:ServicePrincipal": "health.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "health:*", "organizations:DescribeAccount", "organizations:ListAccounts", "organizations:ListDelegatedAdministrators", "organizations:ListParents" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "health.amazonaws.com" } } } ] }
注意

您还可以使用 Amazon 托管角色 Health_OrganizationsServiceRolePolicy,以便 Amazon Health 可以查看组织中其他账户的事件。有关更多信息,请参阅 将服务相关角色用于 Amazon Health

对于只需要调用 Amazon CLI 或 Amazon API 的用户,无需为其提供最低控制台权限。相反,只允许访问与您尝试执行的 API 操作相匹配的操作。

有关更多信息,请参阅 IAM 用户指南中的为用户添加权限

允许用户查看他们自己的权限

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上完成此操作或者以编程方式使用 Amazon CLI 或 Amazon API 所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

访问 Amazon Health Dashboard 和 Amazon Health API

Amazon Health Dashboard 适用于所有 Amazon 账户。这些区域有:Amazon HealthAPI 仅适用于拥有商业、Enterprise On-Ramp 或企业 Support 计划的账户。有关更多信息,请参阅 Amazon Web Services Support

您可以使用 IAM 创建实体(用户、组或角色),然后为这些实体授予权限,以访问Amazon Health Dashboard和Amazon HealthAPI。

默认情况下,IAM 用户无权访问Amazon Health Dashboard或者Amazon HealthAPI。通过将 IAM 策略附加到单一用户、一组用户或角色,您可为用户授予对账户的 Amazon Health 信息的访问权限。有关更多信息,请参阅身份 (用户、组和角色)IAM 策略概述

创建 IAM 用户以后,您可以为这些用户提供单独的密码。然后,他们可以使用特定于账户的登录页面登录账户并查看 Amazon Health 信息。有关更多信息,请参阅 用户如何登录您的 账户

注意

具有查看的权限的 IAM 用户Amazon Health Dashboard对所有运行状况信息都具有只读访问Amazon账户中的服务,可能包括但不限于:AmazonAmazon EC2 实例 ID、EC2 实例 IP 地址和常规安全通知。

例如,如果 IAM 策略仅授予访问权限Amazon Health Dashboard和Amazon HealthAPI,然后策略应用的用户或角色可以访问发布的所有有关信息Amazon服务和相关资源,即使其他 IAM 策略不允许该访问权限也是如此。

有关可用 API 操作的更多信息,请参阅Amazon HealthAPI 参考.

单个操作

描述访问权限

此策略语句授予对 Amazon Health Dashboard 和任何 Describe* Amazon Health API 操作的访问权限。例如,具有此策略的 IAM 用户可以访问Amazon Health Dashboard中的Amazon Web Services Management Console然后拨打Amazon Health DescribeEventsAPI 操作。

例 :描述访问权限

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "health:Describe*" ], "Resource": "*" }] }

拒绝访问

此策略语句拒绝访问 Amazon Health Dashboard 和 Amazon Health API。具有此策略的 IAM 用户无法查看Amazon Health Dashboard中的Amazon Web Services Management Console而且不能打电话给任何Amazon HealthAPI 操作。

例 :拒绝访问

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "health:*" ], "Resource": "*" }] }

组织视图

如果你想启用组织视图Amazon Health,您必须允许访问Amazon Health和Amazon Organizations行动。

这些区域有:ActionIAM 策略的元素必须包含以下权限:

  • iam:CreateServiceLinkedRole

  • organizations:EnableAWSServiceAccess

  • organizations:DescribeAccount

  • organizations:DisableAWSServiceAccess

  • organizations:ListAccounts

  • organizations:ListDelegatedAdministrators

  • organizations:ListParents

要了解每个 API 所需的确切权限,请参阅定义的操作Amazon HealthAPI 和通知中的IAM 用户指南.

注意

您必须使用管理账户中的凭证来访问组织。Amazon Health用于 的 APIAmazon Organizations. 有关更多信息,请参阅 使用组织视图跨账户聚合 Amazon Health 事件

允许访问Amazon Health组织视图

此策略语句授予所有访问权限。Amazon Health和Amazon Organizations组织视图功能需要的操作。

例 :允许 Amazon Health 组织视图访问

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringEquals": { "organizations:ServicePrincipal": "health.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "health:*", "organizations:DescribeAccount", "organizations:ListAccounts", "organizations:ListDelegatedAdministrators", "organizations:ListParents" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/health.amazonaws.com/AWSServiceRoleForHealth*" } ] }

拒绝对 的访问Amazon Health组织视图

此策略语句拒绝访问Amazon Organizations操作但允许访问Amazon Health针对单个账户的操作。

例 :拒绝 Amazon Health 组织视图访问

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "health:*" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringEquals": { "organizations:ServicePrincipal": "health.amazonaws.com" } } }, { "Effect": "Deny", "Action": [ "organizations:DescribeAccount", "organizations:ListAccounts", "organizations:ListDelegatedAdministrators", "organizations:ListParents" ], "Resource": "*" }, { "Effect": "Deny", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/health.amazonaws.com/AWSServiceRoleForHealth*" } ] }
注意

如果您想要授予权限的用户或组已拥有 IAM 策略,则可以添加Amazon Health针对该政策的具体政策声明。

基于资源和基于操作的条件

Amazon Health支持IAM 条件(对于 )DescribeAffectedEntitiesDescribeEventDetailsAPI 操作。您可以使用基于资源和操作的条件来限制Amazon HealthAPI 发送给用户、组或角色。

为此,请更新ConditionIAM 策略的块或设置Resource元素。您可以使用字符串条件基于某些 Amazon Health 事件字段来限制访问。

指定一个时,您可以使用以下字段:Amazon Health保单中的事件:

  • eventTypeCode

  • service

注意

例 :基于操作的条件

此策略语句授予对的访问权限Amazon Health Dashboard和Amazon Health Describe*API 操作,但拒绝访问任何Amazon Health与 Amazon EC2 相关的事件。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "health:Describe*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "health:DescribeAffectedEntities", "health:DescribeEventDetails" ], "Resource": "*", "Condition": { "StringEquals": { "health:service": "EC2" } } } ] }

例 :基于资源的条件

以下策略具有相同的效果,但使用 Resource 元素。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "health:Describe*" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "health:DescribeEventDetails", "health:DescribeAffectedEntities" ], "Resource": "arn:aws:health:*::event/EC2/*/*" }] }

例 : eventTypeCode 条件

此策略语句授予对 Amazon Health Dashboard 和 Amazon Health Describe* API 操作的访问权限,但拒绝访问 eventTypeCodeAWS_EC2_* 匹配的任何 Amazon Health 事件。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "health:Describe*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "health:DescribeAffectedEntities", "health:DescribeEventDetails" ], "Resource": "*", "Condition": { "StringLike": { "health:eventTypeCode": "AWS_EC2_*" } } } ] }
重要

如果调用 DescribeAffectedEntitiesDescribeEventDetails 操作但没有访问 Amazon Health 事件的权限,则会出现 AccessDeniedException 错误。有关更多信息,请参阅 对 Amazon Health 身份和访问进行故障排除