View a markdown version of this page

Amazon Connect Health 的身份和访问管理 - Amazon Connect Health

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

Amazon Connect Health 的身份和访问管理

Amazon Identity and Access Management (IAM) 是一个亚马逊云科技服务,可以帮助管理员安全地控制对亚马逊云科技资源的访问。IAM 管理员控制谁可以接受身份验证(登录)和授权(有权限)使用 Amazon Connect Health 资源。IAM 是一项 AWS 服务,您无需支付额外费用即可使用。

受众

您使用 AWS Identity and Access Management (IAM) 的方式会有所不同,具体取决于您在 Amazon Connect Health 中所做的工作。

服务用户 — 如果您使用 Amazon Connect Health 服务完成工作,则您的管理员会为您提供所需的凭证和权限。当您在工作中使用更多的 Amazon Connect Health 功能时,您可能需要额外的权限。了解如何管理访问权限有助于您向管理员请求适合的权限。

服务管理员 — 如果你负责公司的 Amazon Connect Health 资源,那么你可能拥有对 Amazon Connect Health 的完全访问权限。您的工作是确定您的服务用户应该访问哪些 Amazon Connect Health 功能和资源。然后,您必须向 IAM 管理员提交请求以更改服务用户的权限。请查看该页面上的信息以了解 IAM 的基本概念。

IAM 管理员 — 如果您是 IAM 管理员,则可能需要详细了解如何编写策略来管理 Amazon Connect Health 的访问权限。

使用身份进行身份验证

身份验证是您使用身份凭证登录亚马逊云科技 的方法。您必须以 AWS 账户根用户、IAM 用户身份或通过担任 IAM 角色进行身份验证(登录 AWS)。

对于编程访问,AWS 提供了一个软件开发工具包和 CLI,可使用您的证书对您的请求进行加密签名。如果您不使用 AWS 工具,则必须自己签署请求。Amazon Connect Health 支持签名版本 4,这是一种用于对入站 API 请求进行身份验证的协议。有关对请求进行身份验证的更多信息,请参阅 IA M 用户指南中的适用于 API 请求的 AWS 签名版本 4

无论使用何种身份验证方法,您可能还需要提供其它安全信息。例如,亚马逊云科技 建议您使用多重身份验证 (MFA) 来提高账户的安全性。

AWS 账户根用户 — 创建 AWS 账户时,您首先需要一个登录身份,该身份可以完全访问账户中的所有 AWS 服务和资源。此身份称为 AWS 账户根用户。请不要将根用户用于您的日常任务。保护好根用户凭证,并使用这些凭证来执行仅根用户可以执行的任务。

IAM 用户和群组 — I AM 用户是您的 AWS 账户中对个人或应用程序具有特定权限的身份。在可能的情况下,我们建议使用临时凭证,而不是创建具有长期凭证(如密码和访问密钥)的 IAM 用户。

IAM 角色 — I AM 角色是您的 AWS 账户中具有特定权限的身份。它类似于 IAM 用户,但与特定人员不关联。您可以通过切换角色在 AWS 管理控制台中临时担任 IAM 角色。

联合身份 — 作为最佳实践,要求人类用户(包括需要管理员访问权限的用户)使用与身份提供商的联合身份验证通过临时证书访问 AWS 服务。联合身份是指来自您的企业用户目录、Web 身份提供商、AWS Directory Service、Identity Center 目录的用户,或者任何使用通过身份源提供的证书访问 AWS 服务的用户。

使用策略管理访问

您可以通过创建策略并将其附加到 AWS 身份或资源来控制 AWS 中的访问权限。策略是亚马逊云科技中的对象;在与标识或资源相关联时,策略定义它们的权限。当委托人(用户或角色)提出请求时,AWS 会评估这些策略。策略中的权限确定是允许还是拒绝请求。大多数策略在亚马逊云科技中存储为 JSON 文档。

Identity-based 策略 — Identity-based 策略是您可以附加到身份(例如 IAM 用户、用户组或角色)的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。

Resource-based 策略 — Resource-based 策略是您附加到资源的 JSON 策略文档。基于资源的策略的示例包括 IAM 角色信任策略和 Amazon S3 存储桶策略。

其他策略类型 — AWS 支持其他不太常见的策略类型,包括权限边界、服务控制策略 (SCP)、资源控制策略 (RCP) 和会话策略。

Amazon Connect Health 如何与 IAM 协作

Amazon Connect Health 使用基于 IAM 身份的策略来控制对 Connect Health 操作和资源的访问。管理员应采用最低权限原则,仅授予每个角色所需的权限。

Amazon Connect Health 支持以下 IAM 功能:

  • Identity-based 政策:是

  • Resource-based 政策:否

  • 政策行动:是 (health-agent:*)

  • 策略资源:是(域、代理、集成 ARN)

  • 策略条件密钥:是(aws:RequestTagaws:ResourceTagaws:TagKeys

  • ABAC(基于属性的访问控制):是

Amazon Connect Health 通过 IAM 标签支持基于属性的访问控制 (ABAC),用于域名和代理相关操作。 Resource-level 可以应用权限来限制对特定域、代理和集成的访问权限。管理员需要最低的 IAM 权限才能通过 AWS 控制台访问 Amazon Connect Health。

Read-only 控制台策略:

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:ListDomains", "health-agent:GetDomain", "health-agent:ListIntegrations", "health-agent:ListAgents" ], "Resource": "*" } ] }

完全访问控制台策略:

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStacks", "cloudformation:GetTemplate", "cloudformation:ListStacks", "connect:AssociatePhoneNumberContactFlow", "connect:ClaimPhoneNumber", "connect:DescribeInstance", "connect:DescribePhoneNumber", "connect:ListInstances", "connect:ListPhoneNumbersV2", "connect:ReleasePhoneNumber", "connect:SearchAvailablePhoneNumbers", "connect:TagResource", "connect:UpdatePhoneNumber", "connect:UpdatePhoneNumberMetadata", "ds:DescribeDirectories", "health-agent:CreateAgent", "health-agent:CreateDomain", "health-agent:CreateIntegration", "health-agent:DeleteAgent", "health-agent:DeleteDomain", "health-agent:DeleteIntegration", "health-agent:GenerateMedicalCodes", "health-agent:GetAgent", "health-agent:GetDomain", "health-agent:GetIntegration", "health-agent:GetPatientInsightsJob", "health-agent:ListAgents", "health-agent:ListDomains", "health-agent:ListIntegrations", "health-agent:PublishAgent", "health-agent:StartPatientInsightsJob", "health-agent:UpdateAgent", "health-agent:UpdateIntegration", "healthlake:ReadResource", "healthlake:SearchEverything", "healthlake:SearchWithGet", "healthlake:SearchWithPost", "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreatePolicyVersion", "iam:CreateRole", "iam:CreateServiceLinkedRole", "iam:DeletePolicyVersion", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:PutRolePolicy", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys", "lambda:AddPermission", "lambda:CreateFunction", "lambda:GetFunction", "lex:BuildBotLocale", "lex:CreateBot", "lex:CreateBotAlias", "lex:CreateBotLocale", "lex:CreateBotVersion", "lex:CreateCustomVocabulary", "lex:CreateIntent", "lex:CreateResourcePolicy", "lex:CreateSlot", "lex:CreateSlotType", "lex:CreateUploadUrl", "lex:DeleteBotLocale", "lex:DeleteCustomVocabulary", "lex:DeleteIntent", "lex:DeleteSlot", "lex:DeleteSlotType", "lex:DescribeBot", "lex:DescribeBotAlias", "lex:DescribeBotLocale", "lex:DescribeBotVersion", "lex:DescribeImport", "lex:ListBotLocales", "lex:ListBots", "lex:ListTagsForResource", "lex:StartImport", "lex:TagResource", "lex:UpdateBot", "lex:UpdateBotAlias", "lex:UpdateBotLocale", "lex:UpdateCustomVocabulary", "lex:UpdateIntent", "lex:UpdateResourcePolicy", "lex:UpdateSlot", "lex:UpdateSlotType", "organizations:DescribeOrganization", "organizations:ListAccounts", "s3:GetObject", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:PutObject", "sso:CreateApplication", "sso:CreateApplicationAssignment", "sso:CreateInstance", "sso:ListDirectoryAssociations", "sso:ListInstances", "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationGrant", "sso-directory:CreateUser", "sso-directory:SearchUsers" ], "Resource": "*" } ] }

Identity-based Amazon Connect Health 的政策示例

默认情况下,用户和角色无权创建或修改 Amazon Connect Health 资源。他们也无法使用 AWS 管理控制台、AWS CLI 或 AWS API 执行任务。要授予用户对所需资源执行操作的权限,IAM 管理员可以创建 IAM 策略。管理员随后可以向角色添加 IAM 策略,用户可以代入角色。

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

政策最佳实践:

  • 开始使用 AWS 托管策略,转向最低权限权限。

  • 应用最低权限权限-使用 IAM 策略设置权限时,仅授予执行任务所需的权限。

  • 使用 IAM 策略中的条件进一步限制访问权限。

  • 使用 IAM Access Analyzer 验证您的 IAM 策略,以确保权限的安全性和功能性。

  • 需要多因素身份验证 (MFA)。

示例 1:允许对特定域进行完全访问权限

以下政策授予对特定 Amazon Connect Health 域名及其集成的完全访问权限。

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:*" ], "Resource": [ "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>", "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/integration/*" ] } ] }

示例 2:允许用户开始和查看环境文档会话

以下策略允许用户启动和检索环境文档会话。

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

示例 3: Read-only 访问环境文档

以下政策授予对环境文档会话的只读访问权限。

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

示例 4:对所有 Connect Health 资源的完全访问权限

以下政策授予对所有 Amazon Connect Health 资源的完全访问权限。

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

示例 5:对破坏性操作进行拒绝 Read-only 访问

以下策略授予对域和客户端的只读访问权限,同时明确拒绝删除操作。

{ "Version": "2012-10-17" , "Statement": [ { "Effect": "Allow", "Action": [ "health-agent:GetDomain", "health-agent:ListAgents", "health-agent:GetAgent" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "health-agent:DeleteDomain", "health-agent:DeleteAgent" ], "Resource": "*" } ] }

示例 6:允许 IAM 用户查看自己的权限

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。

{ "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 Connect Health 使用 IAM 服务角色代表您执行操作。Amazon Connect Health 与之交互的每个 AWS 服务组件都在专用 IAM 服务角色下运行,其信任策略的范围仅限于特定的服务主体。

以下示例显示了 Amazon Connect Health 的服务角色策略,该策略授予域、集成和代理管理权限。

{ "Version": "2012-10-17" , "Statement": [ { "Sid": "DescribeUserWithSourceIdentity", "Effect": "Allow", "Action": [ "identitystore:DescribeUser" ], "Resource": "arn:aws:identitystore:::user/${aws:SourceIdentity}" }, { "Sid": "DomainReadAccess", "Effect": "Allow", "Action": [ "health-agent:GetDomain" ], "Resource": "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>" }, { "Sid": "ListOperations", "Effect": "Allow", "Action": [ "health-agent:ListIntegrations", "health-agent:ListAgents", "health-agent:ListAgentVersions" ], "Resource": "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>" }, { "Sid": "IntegrationManagement", "Effect": "Allow", "Action": [ "health-agent:CreateIntegration", "health-agent:GetIntegration", "health-agent:UpdateIntegration", "health-agent:DeleteIntegration" ], "Resource": [ "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>", "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/integration/*" ] }, { "Sid": "AgentManagement", "Effect": "Allow", "Action": [ "health-agent:CreateAgent", "health-agent:UpdateAgent", "health-agent:GetAgent", "health-agent:PublishAgent", "health-agent:DeleteAgent" ], "Resource": [ "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>", "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/agent/*" ] } ] }

以下示例显示了允许 Amazon Connect Health 服务委托人担任该角色的信任策略。

{ "Version": "2012-10-17" , "Statement": [ { "Sid": "AllowHealthAgentServicePrincipal", "Effect": "Allow", "Principal": { "Service": "health-agent.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext", "sts:SetSourceIdentity" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:health-agent:<region>:<account-id>:domain/<domain-id>/*" }, "StringEquals": { "aws:SourceAccount": "<account-id>" } } } ] }

为了帮助防止出现混淆的代理问题,我们建议在信任策略中使用aws:SourceArnaws:SourceAccount条件键。来源 ARN 的范围应限定为该角色打算服务的特定 Amazon Connect Health 域。