本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 2:创建IAM策略和用户
的安全最佳实践 AWS 要求使用细粒度的权限来控制对不同资源的访问权限。 AWS Identity and Access Management (IAM) 允许您在中管理用户和用户权限 AWS。IAM策略明确列出了允许的操作以及这些操作适用的资源。
下面是 Kinesis Data Streams 创建器和消费端通常需要的最低权限。
Producer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
操作 | 资源 | 用途 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 客户端库 (KCL) 开发的,则它需要获得 DynamoDB 表的权限才能跟踪应用程序的处理状态。第一个消费端已开始创建表。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DeleteItem |
Amazon DynamoDB 表 | 消费端在 Kinesis Data Streams 分片上执行拆分/合并操作时适用。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PutMetricData |
亚马逊 CloudWatch 日志 | KCL还会将指标上传到 CloudWatch,这对于监控应用程序非常有用。 |
对于此应用程序,您可以创建一个授予所有上述权限的IAM策略。实际上,您可能需要考虑创建两个策略,一个策略适用于创建器,另一个策略适用于消费端。
创建 IAM策略
-
找到新直播的 Amazon 资源名称 (ARN)。在 “详细信息” 选项卡的顶部,您可以将其ARN列为 “直播 ARN”。ARN格式如下所示:
arn:aws:kinesis:
region
:account
:stream/name
- region
-
区域代码,例如
us-west-2
。有关更多信息,请参阅区域和可用区域概念。 - account
-
AWS 账户 ID,如账户设置
中所示。 - name
-
步骤 1:创建数据流 中的流名称,即
StockTradeStream
。
-
确定要由使用ARN者使用的(并由第一个使用者实例创建)的 DynamoDB 表。它必须采用以下格式:
arn:aws:dynamodb:
region
:account
:table/name
区域和账户来自上一步骤中的相同位置,但这一次,名称 为消费端应用程序创建和使用的表的名称。消费者KCL使用的使用应用程序名称作为表名。使用
StockTradesProcessor
,它是稍后使用的应用程序名称。 -
在IAM控制台的策略 (h https://console.aws.amazon.com/iam/ ome #policies
) 中,选择创建策略。如果这是您第一次使用IAM策略,请选择入门,创建策略。 -
在 Policy Generator 旁,选择 Select。
-
选择 Amazon Kinesis 作为服务。 AWS
-
选择
DescribeStream
、GetShardIterator
、GetRecords
、PutRecord
和PutRecords
作为允许的操作。 -
输入ARN您在步骤 1 中创建的。
-
对以下各项使用 Add Statement (添加语句):
AWS 服务 操作 ARN Amazon DynamoDB CreateTable
,DeleteItem
,DescribeTable
,GetItem
,PutItem
,Scan
,UpdateItem
ARN您在步骤 2 中创建的 Amazon CloudWatch PutMetricData
*
指定时使用的星号 (
*
) ARN 不是必需的。在这种情况下,这是因为没有用于调用PutMetricData
操作 CloudWatch 的特定资源。 -
选择下一步。
-
将 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 用户
从 IAM 打开 https://console.aws.amazon.com/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策略附加到用户
-
在IAM控制台中,打开 “策略
”,然后选择 “策略操作”。 -
选择
StockTradeStreamPolicy
和 Attach (附加)。 -
选择
StockTradeStreamUser
和 Attach Policy (附加策略)。