本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 IAM 政策和使用者
AWS 指定使用精細許可來控制對不同資源之存取的安全最佳實務。 AWS Identity and Access Management (IAM) 可讓您管理 中的使用者和使用者許可 AWS。IAM 政策將明確列出允許的動作以及各項動作所適用的資源。
以下是 Kinesis Data Streams 生產者和取用者一般需要的最低許可。
動作 | 資源 | 用途 |
---|---|---|
DescribeStream , DescribeStreamSummary ,
DescribeStreamConsumer |
Kinesis 資料串流 | 嘗試撰寫記錄之前,生產者應先檢查串流是否存在且處於作用中狀態、串流中是否含有碎片,以及串流是否有消費者。 |
SubscribeToShard ,
RegisterStreamConsumer |
Kinesis 資料串流 | 訂閱並將消費者註冊至 Kinesis 資料串流碎片。 |
PutRecord , PutRecords |
Kinesis 資料串流 | 將資料寫入至 Kinesis Data Streams。 |
動作 | Resource | 用途 |
---|---|---|
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 政策以授予上述所有許可。實際上,您可能要考慮建立兩項政策,一項政策用於生產者,另一項政策用於消費者。
建立 IAM 政策
-
找出新串流的 Amazon Resource Name (ARN)。您可以在 Details (詳細資訊) 標籤頂端所列的 Stream ARN (串流 ARN) 中找到此 ARN。ARN 格式如下:
arn:aws:kinesis:
region
:account
:stream/name
- region
-
區域代碼,例如
us-west-2
。如需詳細資訊,請參閱區域與可用區域的概念。 - 帳戶
-
AWS 帳戶 ID,如帳戶設定
所示。 - name
-
取自建立資料串流的串流名稱,即
StockTradeStream
。
-
決定要供取用者使用的 DynamoDB 資料表 (由第一個取用者執行個體所建立) 的 ARN。其值必須為以下格式:
arn:aws:dynamodb:
region
:account
:table/name
區域及帳戶與前一步驟如出一轍,但此處的 name 為消費者應用程式所建立與使用的資料表的名稱。消費者所用的 KCL 將使用應用程式名稱做為資料表名稱。請使用
StockTradesProcessor
,即稍後將使用的應用程式名稱。 -
在 IAM 主控台的政策 (https://console.aws.amazon.com/iam/home#policies
) 中,選擇建立政策。如果這是您第一次使用 IAM 政策,請選擇開始使用、建立政策。 -
從 Policy Generator (政策產生器) 旁選擇 Select (選取)。
-
選擇 Amazon Kinesis 做為 AWS 服務。
-
選取
DescribeStream
、GetShardIterator
、GetRecords
、PutRecord
和PutRecords
做為允許的動作。 -
輸入您在步驟 1 建立的 ARN。
-
使用 Add Statement (新增陳述式) 指定以下各項:
AWS 服務 動作 ARN Amazon DynamoDB CreateTable
,DeleteItem
,DescribeTable
,GetItem
,PutItem
,Scan
,UpdateItem
您在步驟 2 建立的 ARN Amazon CloudWatch PutMetricData
*
在無須指定 ARN 的情況下要使用星號 (
*
)。此處使用星號是因為 CloudWatch 中沒有任何可對其叫用PutMetricData
動作的特定資源。 -
選擇 Next Step (後續步驟)。
-
將 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 (新增使用者)。
-
對於使用者名稱,輸入
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 (附加政策)。