本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建 IAM 策略和用户
Amazon 的安全最佳实践描述了如何使用精细权限来控制对各种资源的访问。Amazon Identity and Access Management(IAM)支持您管理 Amazon 中的用户和用户权限。IAM policy 明确列出了允许的操作以及这些操作适用于的资源。
下面是 Kinesis Data Streams 创建器和消费端通常需要的最低权限。
操作 | 资源 | 用途 |
---|---|---|
DescribeStream , DescribeStreamSummary ,
DescribeStreamConsumer |
Kinesis 数据流 | 在尝试写入记录之前,创建者会检查流是否存在且处于活动状态、分片是否包含在流中,以及流是否具有消费端。 |
SubscribeToShard ,
RegisterStreamConsumer |
Kinesis 数据流 | 订阅 Kinesis 数据流分片并注册一个消费端。 |
PutRecord , PutRecords |
Kinesis 数据流 | 将记录写入 Kinesis Data Streams。 |
操作 | 资源 | 目的 |
---|---|---|
DescribeStream |
Kinesis 数据流 | 在尝试读取记录前,消费端需检查流是否存在并处于活动状态,以及分片是否包含在流中。 |
GetRecords , GetShardIterator
|
Kinesis 数据流 | 从 Kinesis Data Streams 分片读取记录。 |
CreateTable , DescribeTable ,
GetItem , PutItem , Scan ,
UpdateItem |
Amazon DynamoDB 表 | 如果消费端是使用 Kinesis Client Library(KCL)开发的,则需要 DynamoDB 表的权限才能跟踪应用程序的处理状态。第一个消费端已开始创建表。 |
DeleteItem |
Amazon DynamoDB 表 | 消费端在 Kinesis Data Streams 分片上执行拆分/合并操作时适用。 |
PutMetricData |
Amazon CloudWatch 日志 | KCL 还会将指标上传到 CloudWatch,这对于监控应用程序很有用。 |
对于此应用程序,请创建授予上述所有权限的单个 IAM policy。实际上,您可能需要考虑创建两个策略,一个策略适用于创建器,另一个策略适用于消费端。
创建 IAM policy
-
找到新流的 Amazon 资源名称 (ARN)。您可以在详细信息选项卡顶部找到作为流 ARN 列出的此 ARN。ARN 格式如下所示:
arn:aws:kinesis:
region
:account
:stream/name
-
确定要由消费端使用(并由第一个消费端实例创建)的 DynamoDB 表的 ARN。它必须采用以下格式:
arn:aws:dynamodb:
region
:account
:table/name
区域和账户来自上一步骤中的相同位置,但这一次,名称 为消费端应用程序创建和使用的表的名称。消费端所使用的 KCL 将应用程序名称用作表名称。使用
StockTradesProcessor
,它是稍后使用的应用程序名称。 -
在 IAM 控制台的策略(https://console.aws.amazon.com/iam/home#policies
)中,选择创建策略。如果这是您首次使用 IAM policy,请依次选择开始使用、创建策略。 -
在 Policy Generator 旁,选择 Select。
-
选择 Amazon Kinesis 作为 Amazon 服务。
-
选择
DescribeStream
、GetShardIterator
、GetRecords
、PutRecord
和PutRecords
作为允许的操作。 -
输入您在步骤 1 中创建的 ARN。
-
对以下各项使用 Add Statement (添加语句):
Amazon 服务 操作 ARN Amazon DynamoDB CreateTable
,DeleteItem
,DescribeTable
,GetItem
,PutItem
,Scan
,UpdateItem
您在步骤 2 中创建的 ARN Amazon CloudWatch PutMetricData
*
在不需要指定 ARN 时使用的星号 (
*
)。在此示例中,这是因为 CloudWatch 中没有可对其调用PutMetricData
操作的特定资源。 -
选择下一步。
-
将 Policy Name (策略名称) 更改为
StockTradeStreamPolicy
,审阅代码,然后选择 Create Policy (创建策略)。
生成的策略文档应类似于以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt123",
"Effect": "Allow",
"Action": [
"kinesis:DescribeStream",
"kinesis:PutRecord",
"kinesis:PutRecords",
"kinesis:GetShardIterator",
"kinesis:GetRecords",
"kinesis:ListShards",
"kinesis:DescribeStreamSummary",
"kinesis:RegisterStreamConsumer"
],
"Resource": [
"arn:aws:kinesis:us-west-2:123:stream/StockTradeStream"
]
},
{
"Sid": "Stmt234",
"Effect": "Allow",
"Action": [
"kinesis:SubscribeToShard",
"kinesis:DescribeStreamConsumer"
],
"Resource": [
"arn:aws:kinesis:us-west-2:123:stream/StockTradeStream/*"
]
},
{
"Sid": "Stmt456",
"Effect": "Allow",
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:us-west-2:123:table/StockTradesProcessor"
]
},
{
"Sid": "Stmt789",
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": [
"*"
]
}
]
}
若要创建 IAM 用户
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在 Users (用户) 页面上,选择 Add user (添加用户)。
-
对于 User name,键入
StockTradeStreamUser
。 -
对于 Access type (访问类型),选择 Programmatic access (编程访问),然后选择 Next: Permissions (下一步: 权限)。
-
选择直接附上现有策略。
-
按名称搜索您创建的策略。选中策略名称左侧的框,然后选择 Next: Review (下一步: 审核)。
-
查看详细信息和摘要,然后选择 Create user (创建用户)。
-
复制 Access key ID (访问密钥 ID),并将其私下保存。在 Secret access key (私有访问密钥) 下面选择 Show (显示),然后也将该密钥私下保存。
-
将访问密钥和私有密钥粘贴到一个只有您可以访问的位于安全位置的本地文件中。对于此应用程序,请创建名为
~/.aws/credentials
(具有严格权限)的文件。该文件应采用以下格式:[default] aws_access_key_id=
access key
aws_secret_access_key=secret access key
将 IAM policy 附加到用户
-
在 IAM 控制台中打开策略
,然后选择策略操作。 -
选择
StockTradeStreamPolicy
和 Attach (附加)。 -
选择
StockTradeStreamUser
和 Attach Policy (附加策略)。