使用基于身份的策略(IAM策略) - SQL适用于应用程序的 Amazon Kinesis Data Analytics 开发者指南

对于新项目,我们建议您使用适用于 Apache Flink Studio 的新托管服务,而不是应用程序版 Kinesis Data Analytics。SQLManaged Service for Apache Flink Studio 不仅操作简单,还具有高级分析功能,使您能够在几分钟内构建复杂的流处理应用程序。

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

使用基于身份的策略(IAM策略)

以下是基于身份的策略示例,这些策略演示了账户管理员如何将权限策略附加到IAM身份(即用户、组和角色),并授予对资源执行操作的权限。

重要

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

下面介绍权限策略示例。

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

该策略包含一个语句:

  • 第一条语句使用应用程序的 Amazon 资源名称 (kinesisanalytics:CreateApplication) 授予对资源执行一项操作 (ARN) 的权限。在本例ARN中,指定通配符 (*),表示已向任何资源授予权限。

有关显示所有API操作及其适用的资源的表格,请参阅 API权限:操作、权限和资源参考

使用 控制台所需要的权限

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

我们建议执行下列操作:

适用于 的 Amazon 托管(预定义)策略

AWS 通过提供由创建和管理的独立IAM策略来解决许多常见用例 AWS。 这些由亚马逊管理的政策为常见用例授予必要的权限,这样您就可以不必调查需要哪些权限。有关更多信息,请参阅IAM用户指南中的亚马逊托管政策

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

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

     

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

     

    • 如果用户想要在控制台中创建新IAM角色,则这些权限是不够的(这些权限允许用户选择现有角色)。如果您希望用户能够在控制台中创建IAM角色,请添加IAMFullAccess亚马逊管理的策略。

       

    • 配置应用程序时,用户必须拥有该iam:PassRole操作的权限才能指定IAM角色。此亚马逊管理的政策仅向用户授予前缀开头的IAM角色的iam:PassRole操作权限。service-role/kinesis-analytics

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

您也可以创建自己的自定义IAM策略,以授予操作和资源的权限。您可以将这些自定义策略附加到需要这些权限的 用户或组。

客户托管策略示例

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

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

建议使用两种浏览器窗口。在一个窗口中,创建用户和授予权限。在另一方面,登录 AWS Management Console 使用用户的证书,并在您授予权限时验证权限。

有关演示如何创建可用作应用程序执行IAM角色的角色的示例,请参阅IAM用户指南中的创建IAM角色

步骤 1:创建IAM用户

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

有关说明,请参阅《IAM用户指南》中的 “创建您的第一个IAM用户和管理员群组”。

步骤 2:为用户授予非 特定的操作的权限

首先,为用户授予非 特定的所有操作的权限,在用户使用应用程序时需要具有这些权限。其中包括处理流的权限(Amazon Kinesis Data Streams 操作、Amazon 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/*" } ] }

使用用户凭证登录到控制台以验证这些权限。

步骤 4:允许用户启动特定应用程序

如果您希望用户可以启动某个现有 应用程序,请将以下策略附加到用户。该策略提供 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:允许用户创建 应用程序

如果您希望用户创建 应用程序,您可以将以下策略附加到该用户。您必须更新政策并提供 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 预处理,请将以下策略附加到角色。

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