Langkah 1: 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.

Langkah 1: Buat tujuan

penting

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

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

Contoh ini membuat tujuan menggunakan aliran Kinesis Data RecipientStream Streams yang disebut, dan peran CloudWatch yang memungkinkan Log untuk menulis data ke sana.

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

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

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. Tunggu hingga streaming menjadi aktif. Anda dapat menggunakan perintah aws kinesis describe-stream untuk memeriksa. StreamDescription StreamStatusproperti. Selain itu, perhatikan StreamDescriptionnilai.streaMarn karena Anda akan meneruskannya ke CloudWatch Log 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 peran IAM yang memberikan izin kepada CloudWatch Log untuk memasukkan data ke aliran 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 kondisi aws:SourceArn global yang menentukan sourceAccountId untuk membantu mencegah masalah keamanan wakil yang membingungkan. Jika Anda belum mengetahui ID akun sumber pada panggilan pertama, kami sarankan Anda memasukkan ARN tujuan di bidang ARN sumber. Dalam panggilan berikutnya, Anda harus mengatur ARN sumber menjadi ARN sumber sebenarnya yang Anda kumpulkan dari panggilan pertama. Untuk informasi selengkapnya, lihat Pencegahan Deputi Bingung.

    { "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 itu juga akan diteruskan ke Log nanti: 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. Buat kebijakan izin untuk menentukan tindakan yang dapat dilakukan CloudWatch Log 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 dengan menggunakan perintah 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. Setelah aliran dalam keadaan aktif dan Anda telah membuat peran IAM, Anda dapat membuat tujuan CloudWatch Log.

    1. Langkah ini tidak mengaitkan kebijakan akses dengan tujuan Anda dan hanya langkah pertama dari dua langkah yang menyelesaikan pembuatan tujuan. Catat 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 PutSubscriptionFilter tindakan log: dan memberikan izin ke akun pengirim untuk mengakses tujuan.

      Kebijakan memberikan izin ke AWS akun yang mengirim log. Anda dapat menentukan hanya satu akun ini dalam kebijakan, atau jika akun pengirim adalah anggota organisasi, kebijakan 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 ID o-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 ini memungkinkan hanya akun pengirim data log (111111111111) 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 pada langkah sebelumnya ke tujuan.

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

      Kebijakan akses ini memungkinkan pengguna di AWS Akun dengan ID 111111111111 untuk memanggil PutSubscriptionFiltertujuan dengan ARN arn:aws:logs: region:999999999999:destination:testDestination. Upaya pengguna lain untuk menelepon PutSubscriptionFilter terhadap tujuan ini akan ditolak.

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

Setelah selesai, jika Anda menggunakan AWS Organizations izin lintas akun, ikuti langkah-langkahnya. Langkah 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 ke. Langkah 4: Buat filter berlangganan