本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 1:建立目的地
重要
此程序中的所有步驟必須在日誌資料收件人帳戶中完成。
在此範例中,記錄資料收件者帳戶的帳戶識別碼為 999999999999,而記錄資料寄件者 AWS 帳戶識別碼是 AWS 11111111111111。
此範例使用名為的 Kinesis Data Streams 建立目的地 RecipientStream,以及可讓記 CloudWatch 錄寫入資料的角色。
建立目的地時, CloudWatch Logs 會代表收件者帳戶將測試訊息傳送至目的地。稍後訂閱篩選器處於作用中狀態時, CloudWatch Logs 會代表來源帳戶將記錄事件傳送至目的地。
若要建立目的地
-
在收件人帳戶中,在 Kinesis Data Streams 中建立目的地串流。在命令提示字元中輸入:
aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
-
等到 串流變成作用中。您可以使用 aws 室運動描述流命令來檢查. StreamDescription StreamStatus財產。此外,請記下 StreamDescription.Streamarn 值,因為您稍後會將其傳送至 CloudWatch 記錄檔:
aws kinesis describe-stream --stream-name "RecipientStream"
{ "StreamDescription": { "StreamStatus": "ACTIVE", "StreamName": "RecipientStream", "StreamARN": "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream", "Shards": [ { "ShardId": "shardId-000000000000", "HashKeyRange": { "EndingHashKey": "34028236692093846346337460743176EXAMPLE", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "4955113521868881845667950383198145878459135270218EXAMPLE" } } ] } }
這可能需要花費幾分鐘,讓串流以作用中狀態出現。
-
建立 IAM 角色,以授與 CloudWatch 記錄將資料放入串流的權限。首先,您需要在〜/TrustPolicyForCW L.json 文件中創建一個信任策略。使用文字編輯器來建立此政策檔案,請勿使用 IAM 主控台。
此政策包含
aws:SourceArn
全域條件內容金鑰,可指定sourceAccountId
以協助預防混淆代理人安全問題。如果您在第一次呼叫中還不知道來源帳戶 ID,我們建議您將目的地 ARN 放在來源 ARN 欄位中。在後續呼叫中,應將來源 ARN 設定為從第一次呼叫中收集的實際來源 ARN。如需詳細資訊,請參閱 預防混淆代理人。{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } }, "Action": "sts:AssumeRole" } } -
使用 aws iam create-role 命令來建立 IAM 角色,並指定信任政策檔案。請記下傳回的 Role.Arn 值,因為它也會在稍後傳送至 CloudWatch 記錄檔:
aws iam create-role \ --role-name CWLtoKinesisRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json
{ "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:
region
:sourceAccountId
:*", "arn:aws:logs:region
:recipientAccountId
:*" ] } }, "Principal": { "Service": "logs.amazonaws.com" } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoKinesisRole", "Path": "/", "Arn": "arn:aws:iam::999999999999:role/CWLtoKinesisRole" } } -
建立權限原則,以定義 CloudWatch 記錄檔可對您的帳戶執行哪些動作。首先,使用文本編輯器在文件〜/PermissionsForCW L.json 中創建權限策略:
{ "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:
region
:999999999999:stream/RecipientStream" } ] } -
使用 aws iam put-role-policy 命令將許可政策與角色相關聯:
aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
-
串流處於使用中狀態且您已建立 IAM 角色之後,您可以建立 CloudWatch 記錄目的地。
-
此步驟不會將存取政策與您的目的地相關聯,且只是完成目的地建立兩步驟中的第一步。記下DestinationArn有效負載中返回的內容:
aws logs put-destination \ --destination-name "testDestination" \ --target-arn "arn:aws:kinesis:
region
:999999999999:stream/RecipientStream" \ --role-arn "arn:aws:iam::999999999999:role/CWLtoKinesisRole"{ "DestinationName" : "testDestination", "RoleArn" : "arn:aws:iam::999999999999:role/CWLtoKinesisRole", "DestinationArn" : "arn:aws:logs:us-east-1:999999999999:destination:testDestination", "TargetArn" : "arn:aws:kinesis:us-east-1:999999999999:stream/RecipientStream" }
-
步驟 7a 完成後,即可在日誌資料收件人帳戶中,將存取政策與目的地建立關聯。此原則必須指定 log: PutSubscriptionFilter 動作,並授與寄件者帳戶存取目的地的權限。
此原則會授與傳送記錄檔之 AWS 帳戶的權限。您可以在政策中僅指定這一個帳戶,或者如果寄件者帳戶是組織的成員,則政策可以指定組織的組織 ID。如此一來,您可以僅建立一個政策,就能允許一個組織中的多個帳戶將日誌傳送至此目的地帳戶。
使用文字編輯器建立名為
~/AccessPolicy.json
的檔案,並隨附下列其中一個政策陳述。此第一個範例政策允許組織中具有 ID 為
o-1234567890
的所有帳戶將日誌傳送至收件人帳戶。{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : "*", "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination", "Condition": { "StringEquals" : { "aws:PrincipalOrgID" : ["o-1234567890"] } } } ] }
此下一個範例只允許日誌資料寄件者帳戶 (111111111111) 將日誌傳送至日誌資料收件人帳戶。
{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:
region
:999999999999:destination:testDestination" } ] } -
將您在上一步驟建立的政策連接到目的地。
aws logs put-destination-policy \ --destination-name "testDestination" \ --access-policy file://~/AccessPolicy.json
此存取原則可讓 AWS 帳戶中識別碼為 1111111111 的使用者透過 ARN arn: aw: 日誌:區域:99999999999999: 目的地:PutSubscriptionFilter測試目的地呼叫。
任何其他用戶嘗試撥打此目 PutSubscriptionFilter 的地的嘗試將被拒絕。若要驗證使用者的權限符合存取政策,請參閱《IAM 使用者指南》中的使用政策驗證程式。
-
完成後,如果您正在使用 AWS Organizations 跨帳戶權限,請按照中步驟 2:(僅限於使用組織時) 建立 IAM 角色的步驟操作。如果您要將許可直接授予給其他帳戶,而不是使用 Organizations,則可以略過該步驟並繼續進行 步驟 4:建立訂閱篩選條件。