Passaggio 1: creazione di una destinazione - CloudWatch Registri Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Passaggio 1: creazione di una destinazione

Importante

Tutte le fasi di questa procedura devono essere eseguite nell'account del destinatario dei dati di log.

Per questo esempio, l'account del destinatario dei dati di registro ha un ID AWS account di 9999, mentre l'ID dell'account mittente AWS dei dati di registro è 1111.

Questo esempio crea una destinazione utilizzando un flusso Kinesis Data RecipientStream Streams chiamato e un ruolo CloudWatch che consente a Logs di scrivere dati su di esso.

Quando viene creata la destinazione, CloudWatch Logs invia un messaggio di prova alla destinazione per conto dell'account del destinatario. Quando il filtro di sottoscrizione è attivo in un secondo momento, CloudWatch Logs invia gli eventi di registro alla destinazione per conto dell'account di origine.

Creazione di una destinazione
  1. Nell'account del destinatario, crea un flusso di destinazione in Kinesis Data Streams. Al prompt dei comandi, digita:

    aws kinesis create-stream --stream-name "RecipientStream" --shard-count 1
  2. Attendi finché il flusso non diventa attivo. Puoi usare il comando aws kinesis describe-stream per controllare il. StreamDescription StreamStatusproprietà. Inoltre, prendi nota del ARN valore StreamDescription.Stream perché lo passerai a CloudWatch Logs in un secondo momento:

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

    Potrebbero essere necessari uno o due minuti perché il flusso sia in stato attivo.

  3. Crea il IAM ruolo che concede a CloudWatch Logs l'autorizzazione a inserire dati nel tuo stream. Per prima cosa, devi creare una politica di fiducia in un file TrustPolicyForCWL~/ .json. Utilizza un editor di testo per creare questo file di policy, non utilizzare la console IAM.

    Questa policy include una chiave di contesto della condizione globale aws:SourceArn che specifica il sourceAccountId per prevenire il problema di sicurezza noto come "confused deputy". Se non conosci ancora l'ID dell'account di origine nella prima chiamata, ti consigliamo di inserire la destinazione ARN nel campo di origine. ARN Nelle chiamate successive, è necessario impostare la sorgente ARN in modo ARN che sia la fonte effettiva raccolta dalla prima chiamata. Per ulteriori informazioni, consulta Prevenzione del "confused deputy".

    { "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. Utilizza il comando aws iam create-role per creare il ruolo IAM, specificando il file della policy di trust. Prendi nota del valore Role.Arn restituito perché verrà passato anche a Logs in un secondo momento: 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. Crea una politica di autorizzazioni per definire quali azioni i CloudWatch log possono eseguire sul tuo account. Innanzitutto, usa un editor di testo per creare una politica di autorizzazioni in un file ~/ .json: PermissionsFor CWL

    { "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:region:999999999999:stream/RecipientStream" } ] }
  6. Associa la politica delle autorizzazioni al ruolo utilizzando il comando 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. Dopo che lo stream è nello stato attivo e hai creato il IAM ruolo, puoi creare la destinazione CloudWatch Logs.

    1. In questa fase alla tua destinazione non si associa una policy d'accesso predefinita e costituisce solo la prima delle due fasi necessarie per completare la creazione della destinazione. Prendi nota di DestinationArnciò che viene restituito nel payload:

      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. Dopo aver completato la fase 7, nell'account del destinatario dei dati di log associa alla destinazione una policy d'accesso predefinita. Questa politica deve specificare i log: PutSubscriptionFilter action e concede l'autorizzazione all'account mittente di accedere alla destinazione.

      La politica concede l'autorizzazione all' AWS account che invia i log. Puoi specificare solo questo account nella policy oppure, se l'account del mittente è membro di un'organizzazione, la policy può specificare l'ID dell'organizzazione. In questo modo, puoi creare una sola policy per consentire a più account di un'organizzazione di inviare log a questo account di destinazione.

      Utilizza un editor di testo per creare un file denominato ~/AccessPolicy.json con una delle seguenti istruzioni di policy.

      Questa prima policy di esempio consente a tutti gli account dell'organizzazione che hanno un ID di o-1234567890 di inviare log all'account del destinatario.

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

      Nell'esempio seguente, solo l'account del mittente dei dati di log (111111111111) può inviare log all'account del destinatario dei dati di log.

      { "Version" : "2012-10-17", "Statement" : [ { "Sid" : "", "Effect" : "Allow", "Principal" : { "AWS" : "111111111111" }, "Action" : "logs:PutSubscriptionFilter", "Resource" : "arn:aws:logs:region:999999999999:destination:testDestination" } ] }
    3. Collega la policy creata nel passaggio precedente alla destinazione.

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

      Questa politica di accesso consente agli utenti dell' AWS Account con ID 1111 di effettuare chiamate PutSubscriptionFilterverso la destinazione con ARN arn:aws:logs ::66669999:destination:. region testDestination Il tentativo di qualsiasi altro utente di chiamare questa destinazione verrà rifiutato. PutSubscriptionFilter

      Per convalidare i privilegi di un utente rispetto a una politica di accesso, consulta Using Policy Validator nella Guida per l'IAMutente.

Quando hai finito, se stai utilizzando le autorizzazioni AWS Organizations per più account, segui la procedura riportata di seguito. Passaggio 2: (Solo se utilizzi un'organizzazione) Crea un ruolo IAM Se le autorizzazioni vengono concesse direttamente all'altro account anziché utilizzare Organizations, puoi saltare tale passaggio e procedere alla sezione Passaggio 4: creazione di un filtro di sottoscrizione.