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

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

Amazon Transcribe 基于身份的策略示例

默认情况下,用户和角色没有创建或修改 Amazon Transcribe 资源的权限。他们也无法使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或来执行任务 AWS API。要授予用户对其所需资源执行操作的权限,IAM管理员可以创建IAM策略。然后,管理员可以将IAM策略添加到角色中,用户可以代入这些角色。

要了解如何使用这些示例策略文档创建IAM基于身份的JSON策略,请参阅IAM用户指南中的创建IAM策略(控制台)

有关 Amazon Transcribe 定义的操作和资源类型(包括每种资源类型的格式)的详细信息,请参阅服务授权参考中的 Amazon Transcribe 的操作、资源和条件密钥。ARNs

策略最佳实践

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

  • 开始使用 AWS 托管策略并转向最低权限权限 — 要开始向用户和工作负载授予权限,请使用为许多常见用例授予权限的AWS 托管策略。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息,请参阅《IAM用户指南》中的AWS 托AWS 管策略或工作职能托管策略。

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

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

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

  • 需要多重身份验证 (MFA)-如果您的场景需要IAM用户或 root 用户 AWS 账户,请打开MFA以提高安全性。要要求MFA何时调用API操作,请在策略中添加MFA条件。有关更多信息,请参阅《IAM用户指南》MFA中的使用进行安全API访问

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

使用 AWS Management Console

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

您无需为仅拨打 AWS CLI 或的用户设置最低控制台权限 AWS API。相反,只允许访问与他们尝试执行的API操作相匹配的操作。

为确保实体(用户和角色)可以使用 AWS Management Console,请为其 AWS附加以下托管策略之一。

  • AmazonTranscribeFullAccess:授予创建、读取、更新、删除和运行所有 Amazon Transcribe 资源的完全访问权限。它还允许访问存储桶名称中包含 transcribe 的 Amazon S3 存储桶。

  • AmazonTranscribeReadOnlyAccess:授予对 Amazon Transcribe 资源的只读访问权限,以便您能够获取并列出转录作业和自定义词汇表。

注意

您可以通过登录到 IAM AWS Management Console 并按策略名称搜索来查看托管权限策略。搜索 “转录” 会返回上面列出的两个策略(AmazonTranscribeReadOnlyAmazonTranscribeFullAccess)。

您也可以创建自己的自定义 IAM 策略以允许 Amazon Transcribe API操作权限。您可以将这些自定义策略附加到需要这些权限的实体。

IAM 角色所需的权限

如果您创建要调 IAM 用的角色 Amazon Transcribe,则该角色必须具有访问 Amazon S3 存储桶的权限。如果适用,还必须使用 KMS key 来加密存储桶中的内容。有关示例策略,请参阅下面几节。

信任策略

您用来提出转录请求的 IAM 实体必须具有 Amazon Transcribe 能够担任该角色的信任策略。使用以下 Amazon Transcribe 信任策略。请注意,如果您在启用了通话后分析的情况下发出实时呼叫分析请求,则必须使用“实时呼叫分析的信任策略”。

的信任政策 Amazon Transcribe

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "transcribe.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:transcribe:us-west-2:111122223333:*" } } } ] }

实时通话分析的信任策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "transcribe.streaming.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:transcribe:us-west-2:111122223333:*" } } } ] }

Amazon S3 输入存储桶策略

以下策略授予 IAM 角色访问指定输入存储桶中的文件的权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-INPUT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-INPUT-BUCKET/*" ] } }

Amazon S3 输出存储桶策略

以下策略向 IAM 角色授予向指定输出存储桶写入文件的权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-OUTPUT-BUCKET/*" ] } }

Amazon S3 加密密钥所需的权限

如果您使用加密 Amazon S3 存储桶,请在 KMS key 策略中包含以下内容。 KMS key 这 Amazon Transcribe 允许访问存储桶中的内容。有关允许访问的更多信息 KMS keys,请参阅《AWS KMS 开发者指南》 KMS key中的 “AWS 账户 允许外部访问”。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/KMS-Example-KeyId" } ] }

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

此示例说明如何创建允许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 KMS 加密上下文策略

以下策略授予 IAM 角色 “ExampleRole” 使用此特定内容的 AWS KMS 解密和加密操作的权限。 KMS key此策略适用于具有至少一个加密上下文对的请求,在本例中为“color:indigoBlue”。有关 AWS KMS 加密上下文的更多信息,请参阅AWS KMS 加密上下文

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:color":"indigoBlue" } } } ] }

混淆代理问题防范策略

以下是代入角色政策的示例,它显示了如何使用aws:SourceArnaws:SourceAccount使用 Amazon Transcribe 来防止出现混淆的副手问题。有关混淆代理问题防范的更多信息,请参阅防止跨服务混淆代理

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "transcribe.amazonaws.com" }, "Action": [ "sts:AssumeRole", ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:transcribe:us-west-2:111122223333:*" } } } ] }

基于标签查看转录作业

您可以在基于身份的策略中使用条件,以便基于标签控制对 Amazon Transcribe 资源的访问。此示例演示如何创建策略以允许查看转录作业。不过,只有在转录作业标签 Owner 具有该用户的用户名称值时,才会授予权限。此策略还授予使用 AWS Management Console完成此操作的必要权限。

您可以将此政策附加到您账户中的 IAM 实体。如果名为 test-role 的角色尝试查看转录作业,则必须对转录作业进行 Owner=test-roleowner=test-role 标记(条件键名称不区分大小写),否则它们将被拒绝访问。有关更多信息,请参阅《IAM 用户指南》中的IAM JSON策略元素:条件

有关在中添加标签的更多信息 Amazon Transcribe,请参阅为资源添加标签

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListTranscriptionJobsInConsole", "Effect": "Allow", "Action": "transcribe:ListTranscriptionJobs", "Resource": "*" }, { "Sid": "ViewTranscriptionJobsIfOwner", "Effect": "Allow", "Action": "transcribe:GetTranscriptionJobs", "Resource": "arn:aws:transcribe:*:*:transcription-job/*", "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } } ] }