步驟 1:建立目的地 - Amazon CloudWatch 日誌

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

步驟 1:建立目的地

重要

此程序中的所有步驟必須在日誌資料收件人帳戶中完成。

在此範例中,記錄資料收件者帳戶的帳戶識別碼為 999999999999,而記錄資料寄件者 AWS 帳戶識別碼是 AWS 11111111111111。

此範例使用名為的 Kinesis Data Streams 建立目的地 RecipientStream,以及可讓記 CloudWatch 錄寫入資料的角色。

建立目的地時, CloudWatch Logs 會代表收件者帳戶將測試訊息傳送至目的地。稍後訂閱篩選器處於作用中狀態時, CloudWatch Logs 會代表來源帳戶將記錄事件傳送至目的地。

若要建立目的地
  1. 在收件人帳戶中,在 Kinesis Data Streams 中建立目的地串流。在命令提示字元中輸入:

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. 等到 串流變成作用中。您可以使用 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" } } ] } }

    這可能需要花費幾分鐘,讓串流以作用中狀態出現。

  3. 建立 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" } }
  4. 使用 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" } }
  5. 建立權限原則,以定義 CloudWatch 記錄檔可對您的帳戶執行哪些動作。首先,使用文本編輯器在文件〜/PermissionsForCW L.json 中創建權限策略:

    { "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream" } ] }
  6. 使用 aws iam put-role-policy 命令將許可政策與角色相關聯:

    aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
  7. 串流處於使用中狀態且您已建立 IAM 角色之後,您可以建立 CloudWatch 記錄目的地。

    1. 此步驟不會將存取政策與您的目的地相關聯,且只是完成目的地建立兩步驟中的第一步。記下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" }
    2. 步驟 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" } ] }
    3. 將您在上一步驟建立的政策連接到目的地。

      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:建立訂閱篩選條件