View a markdown version of this page

Amazon Managed Service for Apache Flink 如何与 IAM 配合使用 - Managed Service for Apache Flink

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

Amazon Managed Service for Apache Flink 如何与 IAM 配合使用

在 Amazon MSF 中,您可以在以下不同的上下文中使用 IAM:

应用程序权限

作为应用程序配置的一部分,您可以通过分配给应用程序的 IAM 角色来控制 Amazon MSF 应用程序的 IAM 权限。此 IAM 角色决定应用程序访问使用 IAM 进行授权的其他服务(例如 Amazon S3、Kinesis Data Streams 或 DynamoDB)的权限。

警告

更改服务角色的权限可能会破坏 Amazon MSF 的功能。确保您没有删除应用程序从 Amazon S3 存储桶下载应用程序代码以及向亚马逊发送日志的权限 CloudWatch。

不支持使用基于资源的策略为应用程序分配权限。在附加到要访问资源的策略中,您不能将 Amazon MSF 应用程序指定为主体。

访问应用程序代码和应用程序日志的权限

Amazon MSF 还使用应用程序 IAM 角色来访问上传到 Amazon S3 存储桶中的应用程序代码,并将应用程序日志写入亚马逊日 CloudWatch 志。

当您使用创建或更新应用程序时 AWS 管理控制台,<role-name>在应用程序配置中选择使用所需策略创建/更新 IAM 角色,Amazon MSF 会自动创建和修改 IAM 角色,为 Amazon S3 和 CloudWatch 日志分配所需权限。

如果您手动创建 IAM 角色或使用自动化工具创建和管理应用程序,则必须向应用程序 IAM 角色添加以下权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path-to-application-code" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/kinesis-analytics/application-name:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/kinesis-analytics/application-name:log-stream:kinesis-analytics-log-stream" ] } ] }

Cross-service 混乱的副手预防

当 Amazon MSF 应用程序调用其他应用程序时 AWS 服务,您可以提供更精细的访问权限。例如,如果某个 IAM 角色在多个应用程序中重复使用,则该应用程序可能会访问它不应有权访问的资源。这称为混淆代理问题。有关访问的资源如何限制对特定 Amazon MSF 应用程序的访问的信息,请参阅 Cross-service 混乱的副手预防

应用程序管理和生命周期控制权限

管理应用程序及其生命周期的操作(例如、和)通过与执行操作的资源(例如 IAM 用户UpdateApplication、IAM 群组或诸如 AWS Lambda 调用 Amazon MSF API 之类的资源)关联的基于身份的策略进行控制。CreateApplicationStartApplication

注意

出于向后兼容的原因,控制 Amazon MSF 应用程序生命周期的 API 和 SDK 称为 Amazon Kinesis Analytics V2。

不支持使用附加到 Amazon MSF 应用程序的资源型策略为应用程序生命周期操作分配权限。应用程序 IAM 角色不用于控制对应用程序生命周期操作的访问权限。不应向应用程序角色添加应用程序生命周期权限。

下表列出可与 Amazon MSF 应用程序生命周期操作结合使用的 IAM 功能。

  • 有关适用于 Apache Flink 的托管服务和其他服务如何与大多数 IAM 功能 AWS 服务 配合使用的高级视图,请参阅AWS 服务 IAM 用户指南中的如何与 IA M 配合使用。

  • 有关服务特定资源、操作和用于 IAM 权限策略中的条件上下文键的更多信息,请参阅服务授权参考中的 Amazon Kinesis Analytics V2 的操作、资源和条件键

应用程序生命周期策略操作

支持策略操作:

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

JSON 策略的 Action 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。

Amazon MSF 中的策略操作在操作前面使用 kinesisanalytics 前缀。Amazon MSF API 和 SDK 使用 Amazon Kinesis Analytics V2 前缀。

要在单个语句中指定多项操作,请使用逗号将它们隔开。以下示例显示用于指定 Amazon MSF 策略操作的语法。

"Action" : [ "kinesisanalytics:action1", "kinesisanalytics:action2" ]

您也可以使用通配符(*)指定多项操作。例如,要指定以单词 Describe 开头的所有操作,请包括以下操作。

"Action": "kinesisanalytics:Describe*"

要查看可以在 IAM 策略声明的 Action 元素中指定的所有 Amazon MSF API 操作完整列表,请参阅 Amazon Kinesis Analytics V2 定义的操作

要查看 Amazon MSF 基于身份的策略的示例,请参阅 Identity-based 策略示例

应用程序生命周期策略资源

支持策略资源:

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Resource JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践,请使用其 Amazon 资源名称(ARN)指定资源。对于不支持资源级权限的操作,请使用通配符 (*) 指示语句应用于所有资源。

"Resource": "*"

Amazon MSF 应用程序生命周期操作的权限是为每个应用程序定义的。IAM 策略中的 Resource JSON 元素定义了权限适用的 Amazon MSF 应用程序。

您可以通过指定应用程序 ARN 为单个应用程序分配权限,也可以使用通配符为一组应用程序分配权限。以下示例显示了 Resource 元素的语法。

"Resouce" : "arn:partition:kinesisanalytics:Region:account:application/application-name

您也可以使用通配符分配控制应用程序子集的权限。例如,您可以分配权限来控制名称以特定前缀开头的所有应用程序。

"Resouce" : "arn:partition:kinesisanalytics:Region:account:application/application-name-prefix*

应用程序生命周期策略条件键

支持特定于服务的策略条件键:

管理员可以使用 AWS JSON 策略来指定谁有权访问什么。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Condition 元素根据定义的条件指定语句何时执行。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件键,请参阅 IAM 用户指南中的AWS 全局条件上下文密钥

您可以使用条件键来控制 Amazon MSF 应用程序生命周期操作的权限。要查看Managed Service for Apache Flink的条件键列表,请参阅《服务授权参考》中的Amazon Managed Service for Apache Flink。要了解您可以对哪些操作和资源使用条件键,请参阅Amazon Managed Service for Apache Flink 定义的操作

Attribute-based 使用适用于 Apache Flink 的托管服务的访问控制 (ABAC)

支持 ABAC(策略中的标签):

使用条件键,您可以实施基于属性的访问权限控制(ABAC),这是一种授权策略,该策略基于属性来定义权限。在中 AWS,这些属性称为标签。您可以向 IAM 实体(用户或角色)和许多 AWS 资源附加标签。标记实体和资源是 ABAC 的第一步。然后,设计 ABAC 策略,以在主体的标签与他们尝试访问的资源标签匹配时允许操作。

ABAC 在快速增长的环境中非常有用,并在策略管理变得繁琐的情况下可以提供帮助。

要基于标签控制访问,您需要使用 aws:ResourceTag/key-nameaws:RequestTag/key-nameaws:TagKeys 条件键在策略的条件元素中提供标签信息。如果某个服务对于每种资源类型都支持所有这三个条件键,则对于该服务,该值为。如果某个服务仅对于部分资源类型支持所有这三个条件键,则该值为部分

使用临时凭证

支持临时凭证:

Amazon MSF 应用程序生命周期操作支持临时凭证。

如果您使用除用户名和密码之外的任何方法登录,则 AWS 管理控制台 使用的是临时证书。例如,当您 AWS 使用公司的单点登录 (SSO) 链接进行访问时,该过程会自动创建临时证书。当您以用户身份登录控制台,然后切换角色时,您还会自动创建临时凭证。有关切换角色的更多信息,请参阅从用户切换到 IAM 角色(控制台)

您可以使用 AWS CLI 或 AWS API 手动创建临时证书。然后,您可使用这些临时凭证访问 AWS。我们建议您动态生成临时凭证,而不是使用长期访问密钥。有关更多信息,请参阅 IAM 中的临时安全凭证

Cross-service 委托人权限

支持转发访问会话(FAS):

Amazon MSF 应用程序生命周期操作支持跨服务主体权限。

当您使用 IAM 用户或角色在中执行操作时 AWS,您被视为委托人。使用某些服务时,您可能会执行一个操作,然后此操作在其他服务中启动另一个操作。转发访问会话 (FAS) 使用调用主体的权限 AWS 服务,再加上 AWS 服务 向下游服务发出请求的请求。只有当服务收到需要与其他 AWS 服务 或资源交互才能完成的请求时,才会发出 FAS 请求。在这种情况下,您必须具有执行这两项操作的权限。有关发出 FAS 请求时的策略详情,请参阅转发访问会话

Identity-based 适用于 Apache Flink 的托管服务的策略

支持基于身份的策略:

Identity-based 策略是您可以附加到身份(例如 IAM 用户、用户组或角色)的 JSON 权限策略文档。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略,请参阅《IAM 用户指南》中的使用客户管理型策略定义自定义 IAM 权限

通过使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素,请参阅《IAM 用户指南》中的 IAM JSON 策略元素引用

Identity-based 适用于 Apache Flink 的托管服务的策略示例

要查看 Managed Service for Apache Flink 的基于身份的策略示例,请参阅Identity-based 适用于 Apache Flink 的亚马逊托管服务的策略示例

Resource-based 适用于 Apache Flink 的托管服务中的策略

Amazon Managed Service for Apache Flink 目前不支持基于资源的访问控制。

Managed Service for Apache Flink的访问控制列表 (ACL)

支持 ACL:

访问控制列表(ACL)控制哪些主体(账户成员、用户或角色)有权访问资源。ACL 与基于资源的策略类似,但它们不使用 JSON 策略文档格式。

Managed Service for Apache Flink的服务角色

支持服务角色:

服务角色是由一项服务担任、代表您执行操作的 IAM 角色。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息,请参阅《IAM 用户指南》中的创建向 AWS 服务委派权限的角色

警告

更改服务角色的权限可能会破坏Managed Service for Apache Flink的功能。仅当Managed Service for Apache Flink提供相关指导时才编辑服务角色。

Service-linked 适用于 Apache Flink 的托管服务的角色

支持服务关联角色:

服务相关角色是一种链接到的服务角色。 AWS 服务该服务可以代替您执行操作。 Service-linked 角色出现在您的, AWS 账户 并且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

有关创建或管理服务相关角色的详细信息,请参阅能够与 IAM 搭配使用的AWS 服务。在表中查找Service-linked 角色Yes中包含的服务。选择链接以查看该服务的服务相关角色文档。