Buat Tujuan - CloudWatch Log Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat Tujuan

penting

Semua langkah dalam prosedur ini harus dilakukan di akun penerima data log.

Untuk contoh ini, akun penerima log data memiliki ID akun AWS 999999999999, sedangkan ID akun AWS pengirim data log adalah 111111111111.

Contoh ini membuat tujuan menggunakan pengaliran Kinesis yang disebut RecipientStream, dan peran yang memungkinkan CloudWatch Logs untuk menulis data ke dalamnya.

Saat tujuan dibuat, CloudWatch Log akan mengirimkan pesan pengujian ke tujuan atas nama akun penerima. Ketika filter langganan aktif nanti, CloudWatch Log mengirimkan peristiwa log ke tujuan atas nama akun sumber.

Untuk membuat tujuan
  1. Di akun penerima, buat pengaliran tujuan di Kinesis. Di jendela perintah, ketik:

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. Tunggu hingga pengaliran Kinesis menjadi aktif. Anda dapat menggunakan perintah aws kinesis describe-stream untuk memeriksa StreamDescription. StreamStatusproperti. Selain itu, perhatikan nilai StreamDescription.StreamARN karena Anda akan meneruskannya ke CloudWatch Logs nanti:

    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" } } ] } }

    Mungkin diperlukan satu atau dua menit bagi pengaliran Anda untuk muncul dalam keadaan aktif.

  3. Buat IAM role yang akan memberikan izin kepada CloudWatch Logs untuk memasukkan data ke pengaliran Kinesis Anda. Pertama, Anda harus membuat kebijakan kepercayaan dalam file ~/TrustPolicyFor CWL.json. Gunakan editor teks untuk membuat file kebijakan ini, jangan menggunakan konsol IAM.

    Kebijakan ini mencakup kunci konteks kondisiaws:SourceArn global yang menentukansourceAccountId untuk membantu mencegah masalah keamanan wakil yang membingungkan. Jika Anda belum mengetahui ID akun sumber pada panggilan pertama, sebaiknya letakkan ARN tujuan di bidang ARN sumber. Dalam panggilan berikutnya, Anda harus mengatur ARN sumber menjadi sumber ARN aktual yang Anda kumpulkan dari panggilan pertama. Untuk informasi selengkapnya, lihat Bingung wakil pencegahan.

    { "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. Gunakan perintah aws iam create-role untuk membuat IAM role, dengan menentukan file kebijakan kepercayaan. Perhatikan nilai Role.Arn yang dikembalikan karena nilai Role.Arn yang dihasilkan karena itu juga akan diteruskan ke CloudWatch Logs nanti:

    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. Buat kebijakan izin untuk menentukan tindakan yang dapat dilakukan oleh CloudWatch Logs di akun Anda. Pertama, gunakan editor teks untuk membuat kebijakan izin dalam file ~/PermissionsFor CWL.json:

    { "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream" } ] }
  6. Kaitkan kebijakan izin dengan peran tersebut dengan menggunakan put-role-policy perintah aws iam:

    aws iam put-role-policy \ --role-name CWLtoKinesisRole \ --policy-name Permissions-Policy-For-CWL \ --policy-document file://~/PermissionsForCWL.json
  7. Setelah pengaliran Kinesis dalam keadaan aktif dan Anda telah membuat IAM role, Anda dapat membuat tujuan CloudWatch Logs.

    1. Langkah ini tidak mengaitkan kebijakan akses dengan tujuan Anda dan hanya merupakan langkah pertama dari dua langkah yang akan menyelesaikan pembuatan tujuan. Perhatikan DestinationArnyang dikembalikan dalam muatan:

      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. Setelah langkah 7a selesai, di akun penerima data log, kaitkan kebijakan akses dengan tujuan. Kebijakan ini harus menentukan log:PutSubscriptionFilter tindakan dan memberikan izin kepada akun pengirim untuk mengakses tujuan.

      Kebijakan ini memberikan izin keAWS akun yang mengirimkan log. Anda dapat menentukan hanya satu akun ini dalam kebijakan, atau jika akun pengirim adalah anggota organisasi, kebijakan tersebut dapat menentukan ID organisasi organisasi. Dengan cara ini, Anda dapat membuat hanya satu kebijakan untuk mengizinkan beberapa akun dalam satu organisasi mengirim log ke akun tujuan ini.

      Gunakan editor teks untuk membuat file bernama~/AccessPolicy.json dengan salah satu pernyataan kebijakan berikut.

      Kebijakan contoh pertama ini memungkinkan semua akun di organisasi yang memiliki IDo-1234567890 untuk mengirim log ke akun penerima.

      { "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"] } } } ] }

      Contoh berikutnya memungkinkan hanya akun pengirim data log (11111111) untuk mengirim log ke akun penerima data log.

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination" } ] }
    3. Lampirkan kebijakan yang Anda buat di langkah sebelumnya ke tujuan.

      aws logs put-destination-policy \ --destination-name "testDestination" \ --access-policy file://~/AccessPolicy.json

      Kebijakan akses ini memungkinkan pengguna diAWS Akun dengan ID 111111111111 untuk melakukan panggilan PutSubscriptionFilterberdasarkan tujuan dengan ARN arn:aws:logs: region:99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 Percobaan pengguna lain untuk PutSubscriptionFilter menelepon berdasarkan tujuan ini akan ditolak.

      Untuk memvalidasi hak istimewa pengguna berdasarkan kebijakan akses, lihat Menggunakan Validator Kebijakan dalam Panduan Pengguna IAM.

Setelah selesai, jika Anda menggunakanAWS Organizations izin lintas akun, ikuti langkah-langkah di dalamnyaLangkah 2: (Hanya jika menggunakan organisasi) Buat peran IAM. Jika Anda memberikan izin langsung ke akun lain alih-alih menggunakan Organizations, Anda dapat melewati langkah itu dan melanjutkan keBuat filter langganan.