本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 控制對 Amazon Kinesis Data Streams 資源的存取
AWS Identity and Access Management (IAM) 可讓您執行下列動作:
-
在 AWS 您的帳戶下建立使用者和群組
-
將唯一的安全登入資料指派給您 AWS 帳戶下的每個使用者
-
控制每個使用者使用 AWS 資源執行任務的許可
-
允許另一個 AWS 帳戶中的使用者共用您的 AWS 資源
-
為您的 AWS 帳戶建立角色,並定義可擔任這些角色的使用者或服務
-
為您的企業使用現有的身分,授予使用 AWS 資源執行任務的許可
搭配 Kinesis Data Streams 使用 IAM,您可以控制組織中的使用者是否可以使用特定的 Kinesis Data Streams API 動作來執行任務,以及是否可以使用特定的 AWS 資源。
若您使用 Kinesis Client Library (KCL) 開發應用程式,您的政策就必須包含對 Amazon DynamoDB 和 Amazon CloudWatch 的許可;KCL 使用 DynamoDB 追蹤應用程式的狀態資訊,並且使用 CloudWatch 代表您向 CloudWatch 傳送 KCL 指標。如需 KCL 的詳細資訊,請參閱開發 KCL 1.x 消費者。
如需 IAM 的詳細資訊,請參閱下列各項:
如需 IAM 和 Amazon DynamoDB 的詳細資訊,請參閱《Amazon DynamoDB 開發人員指南》中的使用 IAM 控制對 Amazon DynamoDB 資源的存取。
如需 IAM 和 Amazon CloudWatch 的詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的控制 AWS 帳戶的使用者存取權。
目錄
政策語法
IAM 政策為包含一或多個陳述式的 JSON 文件。每個陳述式的結構如下所示:
{
"Statement":[{
"Effect":"effect
",
"Action":"action
",
"Resource":"arn
",
"Condition":{
"condition
":{
"key
":"value
"
}
}
}
]
}
陳述式由各種元素組成:
-
Effect (效果):效果 可以是
Allow
或Deny
。根據預設,IAM 使用者沒有使用資源和 API 動作的許可,因此所有請求均會遭到拒絕。明確允許覆寫預設值。明確拒絕覆寫任何允許。 -
Action (動作):動作 是您授予或拒絕許可的特定 API 動作。
-
Resource (資源):受動作影響的資源。若要在陳述式中指定資源,您必須使用其 Amazon Resource Name (ARN)。
-
Condition (條件):條件為選擇性。您可以用以控制何時政策開始生效。
當您建立和管理 IAM 政策時,可能想要使用 IAM 政策產生器和 IAM 政策模擬器。
適用於 Kinesis Data Streams 的動作
在 IAM 政策陳述式中,您可以從任何支援 IAM 的服務指定任何 API 動作。針對 Kinesis Data Streams,請在 API 動作名稱使用下列字首:kinesis:
。例如:kinesis:CreateStream
、kinesis:ListStreams
和 kinesis:DescribeStreamSummary
。
若要在單一陳述式中指定多個動作,請用逗號分隔,如下所示:
"Action": ["kinesis:action1", "kinesis:action2"]
您也可以使用萬用字元指定多個動作。例如,您可以指定名稱開頭有「Get」文字的所有動作,如下所示:
"Action": "kinesis:Get*"
若要指定所有的 Kinesis Data Streams 操作,請使用 * 萬用字元,如下所示:
"Action": "kinesis:*"
如需完整 Kinesis Data Streams API 動作清單,請參閱 Amazon Kinesis API 參考。
Kinesis Data Streams 的 Amazon Resource Name (ARN)
每個 IAM 政策陳述式都會套用到您使用其 ARN 指定的資源。
對 Kinesis Data Streams 使用以下的 ARN 資源格式:
arn:aws:kinesis:region
:account-id
:stream/stream-name
例如:
"Resource": arn:aws:kinesis:*:111122223333:stream/my-stream
Kinesis Data Streams 的範例政策
以下範例政策示範如何控制使用者存取您的 Kinesis Data Streams。
與其他 帳戶共用您的資料串流
注意
Kinesis Producer Library 目前不支援在寫入資料串流時指定串流 ARN。如果您想要寫入跨帳戶資料串流,請使用 AWS SDK。
將資源型政策附加到您的資料串流以授予對其他帳戶、IAM 使用者或 IAM 角色的存取權。資源型政策是附加到資源 (如資料串流) 的 JSON 政策文件。這些政策會授予指定的主體許可,允許在該資源上執行特定的動作,並且定義資源所適用的條件。一個政策可以有多個陳述式。您必須在資源型政策中指定主體。委託人可以包括帳戶、使用者、角色、聯合身分使用者 AWS 或服務。您可以在 Kinesis Data Streams 主控台、API 或 SDK 中設定政策。
請注意,共用存取權給已註冊的取用者 (例如增強型散發) 需要資料串流 ARN 和取用者 ARN 這兩者的政策。
啟用跨帳戶存取
如需啟用跨帳戶存取權,您可以指定在其他帳戶內的所有帳戶或 IAM 實體,做為資源型政策的主體。新增跨帳戶主體至資源型政策,只是建立信任關係的一半。當委託人和資源位於不同的 AWS 帳戶中時,您還必須使用以身分為基礎的政策來授予委託人對資源的存取權。不過,如果資源型政策會為相同帳戶中的主體授予存取,這時就不需要額外的身分型政策。
如需有關使用跨帳戶存取之以資源為基礎的政策詳細資訊,請參閱 IAM 中的跨帳戶資源存取權。
資料串流管理員可以使用 AWS Identity and Access Management 政策來指定誰可以存取內容。也就是說,哪個主體在什麼条件下可以對什麼資源執行哪些動作。JSON 政策的 Action
元素描述您可以用來允許或拒絕政策中存取的動作。政策動作通常具有與相關聯 AWS API 操作相同的名稱。
可以共用的 Kinesis Data Streams 動作:
動作 | 存取層級 |
---|---|
DescribeStreamConsumer | 消費者 |
DescribeStreamSummary | 資料串流 |
GetRecords | 資料串流 |
GetShardIterator | 資料串流 |
ListShards | 資料串流 |
PutRecord | 資料串流 |
PutRecords | 資料串流 |
SubscribeToShard | 消費者 |
以下是使用資源型政策將跨帳戶存取權授予您的資料串流或以註冊取用者的範例。
若要執行跨帳戶動作,您必須指定資料串流存取權的串流 ARN,並指定已註冊取用者存取權的取用者 ARN。
Kinesis 資料串流的資源型政策範例
由於需要採取行動,共用已註冊取用者涉及資料串流政策和取用者政策。
注意
以下為 Principal
的有效值範例:
{"AWS": "123456789012"}
IAM 使用者 –
{"AWS": "arn:aws:iam::123456789012:user/user-name"}
IAM 角色 –
{"AWS":["arn:aws:iam::123456789012:role/role-name"]}
多個主體 (可以是帳戶、使用者、角色的組合) –
{"AWS":["123456789012", "123456789013", "arn:aws:iam::123456789012:user/user-name"]}
以程式設計方式管理資料串流的政策
在 之外 AWS Management Console,Kinesis Data Streams 有三個 API,用於管理您的資料串流政策:
使用 PutResourePolicy
來附加或覆寫資料串流或取用者的政策。使用 GetResourcePolicy
來檢查和檢視指定資料串流或取用者的政策。使用 DeleteResourcePolicy
來刪除指定資料串流或取用者的政策。
政策限制
Kinesis Data Streams 資源政策有下列限制:
-
萬用字元 (*) 不支援協助防止透過直接連接到資料串流或註冊消費者的資源政策授予廣泛的存取。此外,請仔細檢查下列政策,以確認它們未授予廣泛存取權:
-
連接到相關聯 AWS 主體的身分型政策 (例如 IAM 角色)
-
連接至相關聯 AWS 資源的資源型政策 (例如, AWS Key Management Service KMS 金鑰)
-
AWS 委託人不支援 服務委託人,以防止潛在的混淆代理人。
不支援聯合主體。
不支援正式使用者 ID。
政策大小不得超過 20KB。
共用對加密資料的存取權
如果您已為具有 AWS 受管 KMS 金鑰的資料串流啟用伺服器端加密,並想要透過資源政策共用存取權,則必須切換到使用客戶受管金鑰 (CMK)。如需詳細資訊,請參閱什麼是 Kinesis Data Streams 的伺服器端加密?。此外,您必須允許共用主體實體以使用 KMS 跨帳戶共用功能來存取您的 CMK。請務必同時在共用主體實體的 IAM 政策中進行變更。如需詳細資訊,請參閱允許其他帳戶中的使用者使用 KMS 金鑰。
將 AWS Lambda 函數設定為從另一個帳戶中的 Kinesis Data Streams 讀取
有關如何設定 Lambda 函數來讀取其他帳戶的 Kinesis Data Streams 之範例,請參閱 與跨帳戶 AWS Lambda 函數共用存取權。