为 Amazon Kinesis Data Analytics使用基于身份的策略(IAM 策略) - Amazon Kinesis Data Analytics for SQL 应用程序开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

为 Amazon Kinesis Data Analytics使用基于身份的策略(IAM 策略)

下面提供了基于身份的策略的示例,这些示例展示了账户管理员如何将权限策略附加到 IAM 身份(即用户、组和角色),从而授予对 Amazon Kinesis Data Analytics 资源执行操作的权限。

重要

我们建议您首先阅读以下介绍性主题,这些主题说明了可用于管理 Amazon Kinesis Data Analytics 资源访问的基本概念和选项。有关更多信息,请参阅 管理 Amazon Kinesis Data Analytics 资源的访问权限概述。)

下面介绍权限策略示例。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1473028104000", "Effect": "Allow", "Action": [ "kinesisanalytics:CreateApplication" ], "Resource": [ "*" ] } ] }

该策略包含一个语句:

  • 第一个语句使用应用程序的 Amazon 资源名称 (ARN) 授予权限以对资源执行一个 Kinesis Data Analytics 操作 (kinesisanalytics:CreateApplication)。此示例中的 ARN 指定通配符 (*),表示为任何资源授予相应权限。

有关显示所有 Kinesis Data Analytics API 操作及其适用资源的表,请参阅 Amazon Kinesis Data AnalyticsAPI 权限 操作、权限和资源参考

使用 Amazon Kinesis Data Analytics 控制台所需的权限

您必须为用户授予所需的权限才能使用 Kinesis Data Analytics 控制台。例如,如果希望用户拥有相应权限以创建应用程序,请授予显示账户中的流式传输源的权限,以便用户可以在控制台中配置输入和输出。

我们建议执行下列操作:

适用于 Amazon Kinesis Data Analytics 的 AWS 托管(预定义)策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决许多常用案例。这些 AWS 托管策略可针对常用案例授予必要的权限,使您免去调查所需权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

以下 AWS 托管策略(可以附加到您账户中的用户)是特定于 Amazon Kinesis Data Analytics 的:

  • AmazonKinesisAnalyticsReadOnly – 为 Amazon Kinesis Data Analytics 操作授予权限以允许用户列出 Amazon Kinesis Data Analytics 应用程序并查看输入/输出配置。这还会授予权限以允许用户查看 Kinesis 流和 Kinesis Data Firehose 传输流列表。应用程序运行时,用户可以在控制台中查看源数据和实时分析结果。

     

  • AmazonKinesisAnalyticsFullAccess – 为所有 Amazon Kinesis Data Analytics 操作授予权限,并授予所有其他权限以允许用户创建和管理 Amazon Kinesis Data Analytics 应用程序。但是,请注意以下事项:

     

    • 如果用户要在控制台中创建一个新的 IAM 角色,这些权限并不能满足需求(这些权限允许用户选择现有角色)。如果您希望用户能够在控制台中创建 IAM 角色,请添加 IAMFullAccess AWS 托管策略。

       

    • 在配置 Amazon Kinesis Data Analytics 应用程序时,用户必须具有 iam:PassRole 操作权限才能指定 IAM 角色。此 AWS 托管策略将 iam:PassRole 操作的权限仅授予给以前缀 service-role/kinesis-analytics 开头的 IAM 角色中的用户。

      如果用户要为 Amazon Kinesis Data Analytics 应用程序配置的角色没有该前缀,您必须先在特定角色中为用户明确授予 iam:PassRole 操作的权限。

注意

登录 IAM 控制台后搜索特定策略,可以查看这些权限策略。

此外,您还可以创建自己的自定义 IAM 策略,以授予对 Amazon Kinesis Data Analytics 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管的策略示例

此部分中的示例提供了一组可附加到用户的示例策略。如果您是首次创建策略,建议您先在账户中创建 IAM 用户。然后,按顺序将策略附加到用户,如此部分中的步骤所述。然后,在将每个策略附加到用户时,可使用控制台验证该策略的效果。

最初,用户没有权限并且无法在控制台中执行任何操作。在将策略附加到用户时,可以验证用户是否能在控制台中执行各种操作。 

建议使用两种浏览器窗口。在一个窗口中,创建用户和授予权限。在另一个窗口中,使用用户的凭证登录 AWS 管理控制台,并在授予权限时验证权限。

有关说明如何创建可用作 Amazon Kinesis Data Analytics 应用程序执行角色的 IAM 角色的示例,请参阅 IAM 用户指南 中的创建 IAM 角色。

步骤 1. 创建 IAM 用户

首先,您需要创建一个 IAM 用户,将该用户添加到具有管理权限的 IAM 组,然后向您创建的 IAM 用户授予管理权限。您随后便可以使用一个特殊的 URL 和该 IAM 用户的凭证访问 AWS。

有关说明,请参阅 https://docs.amazonaws.cn/IAM/latest/UserGuide/getting-started_create-admin-group.html 中的IAM 用户指南创建您的第一个 IAM 用户和管理员组

步骤 2. 允许用户对不具体的操作的权限 Amazon Kinesis Data Analytics

首先,为用户授予非 Amazon Kinesis Data Analytics 特定的所有操作的权限,在用户使用 Amazon Kinesis Data Analytics 应用程序时需要具有这些权限。其中包括使用流(Amazon Kinesis Data Streams 操作、Amazon Kinesis Data Firehose 操作)的权限以及 CloudWatch 操作的权限。将下面的策略附加到用户.

您需要通过提供要向其授予 iam:PassRole 权限的 IAM 角色名来更新策略,或者指定通配符 (*) 来表示所有 IAM 角色。这不是安全做法;但是,您可能未在此测试期间创建特定 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:CreateStream", "kinesis:DeleteStream", "kinesis:DescribeStream", "kinesis:ListStreams", "kinesis:PutRecord", "kinesis:PutRecords" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "firehose:DescribeDeliveryStream", "firehose:ListDeliveryStreams" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics" ], "Resource": "*" }, { "Effect": "Allow", "Action": "logs:GetLogEvents", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListPolicyVersions", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/service-role/role-name" } ] }

步骤 3 允许用户查看应用程序列表并查看详细信息

以下策略为用户授予以下权限:

  • kinesisanalytics:ListApplications 操作的权限,以便用户可以查看应用程序列表。这是服务级别的 API 调用,因此您应当指定“*”作为 Resource 值。

  • kinesisanalytics:DescribeApplication 操作的权限,以便您可以获取任何应用程序的相关信息。

将此策略添加到用户。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisanalytics:ListApplications" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kinesisanalytics:DescribeApplication" ], "Resource": "arn:aws:kinesisanalytics:aws-region:aws-account-id:application/*" } ] }

使用 IAM 用户凭证登录到 Amazon Kinesis Data Analytics 控制台以验证这些权限。

步骤 4. 允许用户启动特定应用

如果您希望用户可以启动某个现有 Amazon Kinesis Data Analytics 应用程序,请将以下策略附加到用户。该策略提供 kinesisanalytics:StartApplication 操作的权限:您必须提供您的账户 ID、AWS 区域及应用程序名称以更新策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisanalytics:StartApplication" ], "Resource": "arn:aws:kinesisanalytics:aws-region:aws-account-id:application/application-name" } ] }

步骤 5. 允许用户创建 Amazon Kinesis Data Analytics 应用

如果您希望用户创建 Amazon Kinesis Data Analytics 应用程序,您可以将以下策略附加到该用户。您必须更新策略,并提供一个 AWS 区域、账户 ID 以及希望用户创建的特定应用程序名称,或者提供“*”以便用户可以指定任何应用程序名称(从而创建多个应用程序)。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1473028104000", "Effect": "Allow", "Action": [ "kinesisanalytics:CreateApplication" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "kinesisanalytics:StartApplication", "kinesisanalytics:UpdateApplication", "kinesisanalytics:AddApplicationInput", "kinesisanalytics:AddApplicationOutput" ], "Resource": "arn:aws:kinesisanalytics:aws-region:aws-account-id:application/application-name" } ] }

步骤 6. 允许应用程序使用 Lambda 预处理

如果希望应用程序能够使用 Lambda 预处理,请将以下策略附加到角色。有关 Lambda 预处理的更多信息,请参阅使用 Lambda 函数预处理数据

{ "Sid": "UseLambdaFunction", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": "<FunctionARN>" }