Amazon Connect 基于身份的策略示例 - Amazon Connect

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

Amazon Connect 基于身份的策略示例

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

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

策略最佳实践

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

  • AWS 托管策略及转向最低权限许可入门 - 要开始向用户和工作负载授予权限,请使用 AWS 托管策略来为许多常见使用场景授予权限。您可以在 AWS 账户 中找到这些策略。我们建议通过定义特定于您的使用场景的 AWS 客户管理型策略来进一步减少权限。有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管策略工作职能的 AWS 托管策略

  • 应用最低权限 – 在使用 IAM policy 设置权限时,请仅授予执行任务所需的权限。为此,您可以定义在特定条件下可以对特定资源执行的操作,也称为最低权限许可。有关使用 IAM 应用权限的更多信息,请参阅《IAM 用户指南》中的 IAM 中的策略和权限

  • 使用 IAM policy 中的条件进一步限制访问权限 – 您可以向策略添加条件来限制对操作和资源的访问。例如,您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果通过特定 AWS 服务(例如 AWS CloudFormation)使用服务操作,您还可以使用条件来授予对服务操作的访问权限。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件

  • 使用 IAM Access Analyzer 验证您的 IAM policy,以确保权限的安全性和功能性 – IAM Access Analyzer 会验证新策略和现有策略,以确保策略符合 IAM policy语言 (JSON) 和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议,以帮助您制定安全且功能性强的策略。有关更多信息,请参阅《IAM 用户指南》中的 IAM Acess Analyzer 策略验证

  • Require multi-factor authentication(MFA)[需要多重身份验证(MFA)] – 如果您所处的场景要求您的 AWS 账户 中有 IAM 用户或根用户,请启用 MFA 来提高安全性。若要在调用 API 操作时需要 MFA,请将 MFA 条件添加到您的策略中。有关更多信息,请参阅《IAM 用户指南》中的配置受 MFA 保护的 API 访问

有关 IAM 中的最佳实践的更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

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

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管式策略。此策略包括在控制台上完成此操作或者以编程方式使用 AWS CLI 或 AWS 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": "*" } ] }

授予“查看用户”权限

当您在AWS账户中创建用户或时,您可以将 IAM policy 与该组或该用户关联,用于指定要授予的权限。

例如,假设您有一个入门级开发人员组。您可以创建名为 Junior application developers 的 IAM 组,并包括所有入门级开发人员。然后,将一个策略与该组关联,以向他们授予查看 Amazon Connect 用户的权限。在这种情况下,您可能有一个类似下面示例的策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "connect:DescribeUser", "connect:ListUsers" ], "Resource": "*" } ] }

该示例策略授予 Action 元素中列出的 API 操作的权限。

注意

如果语句中未指定用户 ARN 或 ID,则还必须对 Resource 元素使用 * 通配符向该操作授予使用所有资源的权限。

允许用户与外部应用程序集成

此示例演示了如何创建允许用户与其外部应用程序集成进行交互的策略,以允许用户与其外部应用程序集成进行交互。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllAppIntegrationsActions", "Effect": "Allow", "Action": [ "app-integrations:ListEventIntegrations", "app-integrations:CreateEventIntegration", "app-integrations:GetEventIntegration", "app-integrations:UpdateEventIntegration", "app-integartions:DeleteEventIntegration", "app-integrations:ListDataIntegrations", "app-integrations:CreateDataIntegration", "app-integrations:GetDataIntegration", "app-integrations:UpdateDataIntegration", "app-integartions:DeleteDataIntegration" ], "Resource": "*" } ] }

根据标签描述和更新 Amazon Connect 用户

在 IAM policy 中,您可以指定控制策略何时生效的条件。例如,您可以定义一条策略,使用户只能更新在测试环境中工作的 Amazon Connect 用户。

您可以定义一些特定于 Amazon Connect 的条件,也可以定义适用于所有条件的其他条件AWS。有关 AWS 范围条件列表的更多信息,请参阅 IAM 用户指南中的 IAM JSON 策略元素参考

以下示例策略允许具有特定标签的用户执行“描述”和“更新”操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "connect:DescribeUser", "connect:UpdateUser*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Department": "Test" } } } ] }

此政策允许 “描述用户” 和 “更新用户”,但仅适用于标有 “部门:测试” 标签的 Amazon Connect 用户,其中 “部门” 是标签密钥,“测试” 是标签值。

根据标签创建 Amazon Connect 用户

以下示例策略允许具有特定请求标签的用户执行“创建”操作

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "connect:CreateUser", "connect:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Owner": "TeamA" } } } ] }

此策略允许 “创建用户” 和 “标记资源”,但请求中必须存在 “所有者:TeamA” 标签。

创建和查看亚马逊AppIntegrations资源

以下示例策略允许创建、列出和获取事件集成。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "app-integrations:CreateEventIntegration", "app-integrations:GetEventIntegration", "app-integrations::ListEventIntegrations", ], "Resource": "*" } ] }

创建和查看 Amazon Connect 智能助手

以下示例策略允许创建、列出、提取和删除 Wisdom 助手。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "wisdom:CreateAssistant", "wisdom:GetAssistant", "wisdom:ListAssistants", "wisdom:DeleteAssistant", ], "Resource": "*" } ] }

管理出站活动资源

入门权限:以下示例政策允许 Amazon Connect 实例加入出站活动。

"Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "connect:DescribeInstance" ], "Resource": [ "arn:aws:connect:region:account-id:instance/instance-id" ] }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "iam:CreateServiceLinkedRole", "iam:AttachRolePolicy", "iam:PutRolePolicy", "ds:DescribeDirectories", "connect-campaigns:StartInstanceOnboardingJob", "connect-campaigns:GetConnectInstanceConfig", "connect-campaigns:GetInstanceOnboardingJobStatus", "connect-campaigns:DeleteInstanceOnboardingJob", "connect:DescribeInstanceAttribute", "connect:UpdateInstanceAttribute", "connect:ListInstances", "kms:ListAliases" ], "Resource": "*" }

要禁用实例的出站活动,请添加以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:RetireGrant" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:RemoveTargets", "events:DescribeRule", "iam:DeleteRolePolicy", "events:ListTargetsByRule", "iam:DeleteServiceLinkedRole", "connect-campaigns:DeleteConnectInstanceConfig" ], "Resource": "*" } ]

管理权限:以下示例策略允许对出站活动进行所有读取和写入操作。

{ "Sid": "AllowConnectCampaignsOperations", "Effect": "Allow", "Action": [ "connect-campaigns:CreateCampaign", "connect-campaigns:DeleteCampaign", "connect-campaigns:DescribeCampaign", "connect-campaigns:UpdateCampaignName", "connect-campaigns:GetCampaignState" "connect-campaigns:UpdateOutboundCallConfig", "connect-campaigns:UpdateDialerConfig", "connect-campaigns:PauseCampaign", "connect-campaigns:ResumeCampaign", "connect-campaigns:StopCampaign", "connect-campaigns:GetCampaignStateBatch", "connect-campaigns:ListCampaigns" ], "Resource": "*" }

ReadOnly权限:以下策略示例允许用户对活动进行只读访问。

{ "Sid": "AllowConnectCampaignsReadOnlyOperations", "Effect": "Allow", "Action": [ "connect-campaigns:DescribeCampaign", "connect-campaigns:GetCampaignState", "connect-campaigns:GetCampaignStateBatch", "connect-campaigns:ListCampaigns" ], "Resource": "*", }

基于标签的权限:以下示例策略使用标签限制访问与特定 Amazon Connect 实例集成的活动。可以根据用例添加更多权限。

{ "Sid": "AllowConnectCampaignsOperations", "Effect": "Allow", "Action": [ "connect-campaigns:DescribeCampaign", "connect-campaigns:GetCampaignState" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/owner": "arn:aws:connect:region:customer_account_id:instance/connect_instance_id" } } }
注意

connect-campaigns:ListCampaigns而且标签无法限制connect-campaigns:GetCampaignStateBatch操作。