步驟 2:建立 IAM 政策和使用者 - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 2:建立 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 政策
  1. 找出新串流的 Amazon Resource Name (ARN)。您可以在 Details (詳細資訊) 標籤頂端所列的 Stream ARN (串流 ARN) 中找到此 ARN。ARN 格式如下:

    arn:aws:kinesis:region:account:stream/name
    region

    區域代碼,例如 us-west-2。如需詳細資訊,請參閱區域與可用區域的概念

    帳戶

    AWS 帳戶 ID,如帳戶設定所示。

    name

    取自步驟 1:建立資料串流的串流名稱,即 StockTradeStream

  2. 決定要供取用者使用的 DynamoDB 資料表 (由第一個取用者執行個體所建立) 的 ARN。其值必須為以下格式:

    arn:aws:dynamodb:region:account:table/name

    區域及帳戶與前一步驟如出一轍,但此處的 name 為消費者應用程式所建立與使用的資料表的名稱。消費者所用的 KCL 將使用應用程式名稱做為資料表名稱。請使用 StockTradesProcessor,即稍後將使用的應用程式名稱。

  3. 在 IAM 主控台的政策 (https://console.aws.amazon.com/iam/home#policies) 中,選擇建立政策。如果這是您第一次使用 IAM 政策,請選擇開始使用建立政策

  4. Policy Generator (政策產生器) 旁選擇 Select (選取)

  5. 選擇 Amazon Kinesis 做為 AWS 服務。

  6. 選取 DescribeStreamGetShardIteratorGetRecordsPutRecordPutRecords 做為允許的動作。

  7. 輸入您在步驟 1 建立的 ARN。

  8. 使用 Add Statement (新增陳述式) 指定以下各項:

    AWS 服務 動作 ARN
    Amazon DynamoDB CreateTable, DeleteItem, DescribeTable, GetItem, PutItem, Scan, UpdateItem 您在步驟 2 建立的 ARN
    Amazon CloudWatch PutMetricData *

    在無須指定 ARN 的情況下要使用星號 (*)。此處使用星號是因為 CloudWatch 中沒有任何可對其叫用 PutMetricData 動作的特定資源。

  9. 選擇 Next Step (後續步驟)

  10. 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 使用者
  1. 前往網址 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. Users (使用者) 頁面上,選擇 Add user (新增使用者)

  3. 針對 User name (使用者名稱),輸入 StockTradeStreamUser

  4. 對於 Access type (存取類型),選擇 Programmatic access (程式設計存取),然後選擇 Next: Permissions (下一步:許可)

  5. 選擇 Attach existing policies directly (直接連接現有政策)。

  6. 依名稱搜尋您所建立的政策。選取政策名稱左側的方塊,然後選擇 Next: Review (下一步:檢閱)

  7. 檢閱詳細資訊及摘要,然後選擇 Create user (建立使用者)

  8. 複製 Access key ID (存取金鑰 ID) 並將其私下儲存。從 Secret access key (私密存取金鑰) 下方選擇 Show (顯示),然後一併將該金鑰私下儲存。

  9. 將存取金鑰和私密金鑰貼入本機檔案中,存放於只有您能夠存取的安全處。針對此應用程式,請建立名為 ~/.aws/credentials (具有嚴格許可) 的檔案。該檔案應採用以下格式:

    [default] aws_access_key_id=access key aws_secret_access_key=secret access key
將 IAM 政策附接至使用者
  1. 在 IAM 主控台,開啟政策並選擇 政策動作

  2. 依序選擇 StockTradeStreamPolicyAttach (附加)

  3. 依序選擇 StockTradeStreamUserAttach Policy (附加政策)

後續步驟

步驟 3:下載並建置實作程式碼