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à.
Abilita la registrazione dai servizi AWS
Sebbene molti servizi pubblichino i log solo nei CloudWatch log, alcuni AWS servizi possono pubblicare i log direttamente su Amazon Simple Storage Service o Amazon Data Firehose. Se il tuo requisito principale per i log è l'archiviazione o l'elaborazione in uno di questi servizi, puoi facilmente fare in modo che il servizio che produce i log li invii direttamente ad Amazon S3 o Firehose senza ulteriori configurazioni.
Anche quando i log vengono pubblicati direttamente su Amazon S3 o Firehose, vengono applicati dei costi. Per ulteriori informazioni, consulta Vending Logs nella scheda Logs di Amazon Pricing. CloudWatch
Alcuni AWS servizi utilizzano un'infrastruttura comune per inviare i propri log. Per abilitare la registrazione da questi servizi, è necessario accedere come utente con determinate autorizzazioni. Inoltre, è necessario concedere le autorizzazioni AWS per consentire l'invio dei log.
Per i servizi che richiedono queste autorizzazioni, sono necessarie due versioni delle autorizzazioni. I servizi che richiedono queste autorizzazioni aggiuntive sono indicati come [Autorizzazioni V1] supportate e [Autorizzazioni V2] supportate nella tabella. Per informazioni su queste autorizzazioni richieste, consulta le sezioni dopo la tabella.
Registrazione che richiede autorizzazioni aggiuntive [V1]
Alcuni AWS servizi utilizzano un'infrastruttura comune per inviare i propri log a CloudWatch Logs, Amazon S3 o Firehose. Per abilitare i servizi AWS elencati nella tabella seguente per inviare i log a queste destinazioni, devi essere connesso come un utente che dispone di determinate autorizzazioni.
Inoltre, è necessario concedere le autorizzazioni AWS per consentire l'invio dei log. AWS può creare automaticamente tali autorizzazioni al momento della configurazione dei registri oppure è possibile crearle personalmente prima di configurare la registrazione. Per la distribuzione su più account, è necessario creare manualmente le politiche di autorizzazione.
Se si sceglie di impostare AWS automaticamente le autorizzazioni e le politiche relative alle risorse necessarie quando l'utente o un membro dell'organizzazione configurano per la prima volta l'invio dei log, l'utente che sta configurando l'invio dei log deve disporre di determinate autorizzazioni, come spiegato più avanti in questa sezione. In alternativa, è possibile creare autonomamente le policy delle risorse e quindi gli utenti che impostano l'invio dei log non necessitano di altrettante autorizzazioni.
Nella tabella seguente vengono riepilogati i tipi di log e le destinazioni di log a cui si applicano le informazioni contenute in questa sezione.
Nelle sezioni seguenti vengono fornite ulteriori dettagli per ciascuna di queste destinazioni.
Registri inviati a Logs CloudWatch
Importante
Quando si impostano i tipi di registro nell'elenco seguente per l'invio ai CloudWatch registri, AWS crea o modifica le politiche delle risorse associate al gruppo di log che riceve i registri, se necessario. Continua a leggere questa sezione per vedere i dettagli.
Questa sezione si applica quando i tipi di log elencati nella tabella della sezione precedente vengono inviati a Logs: CloudWatch
Autorizzazioni degli utenti
Per poter configurare l'invio di uno di questi tipi di log a CloudWatch Logs per la prima volta, è necessario accedere a un account con le seguenti autorizzazioni.
logs:CreateLogDelivery
logs:PutResourcePolicy
logs:DescribeResourcePolicies
logs:DescribeLogGroups
Nota
Quando specificate l'
logs:PutResourcePolicy
autorizzazionelogs:DescribeLogGroups
, ologs:DescribeResourcePolicies
, assicuratevi di impostare la relativaResource
riga in modo che utilizzi un carattere*
jolly, invece ARN di specificare solo il nome di un singolo gruppo di log. Ad esempio,"Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"
.
Se uno di questi tipi di log viene già inviato a un gruppo di log in CloudWatch Logs, per configurare l'invio di un altro di questi tipi di log allo stesso gruppo di log è sufficiente l'autorizzazione. logs:CreateLogDelivery
Policy delle risorse del gruppo di log
Il gruppo di log in cui vengono inviati i log deve disporre di una policy delle risorse che includa determinate autorizzazioni. Se il gruppo di log attualmente non dispone di un criterio in materia di risorse e l'utente che configura la logs:PutResourcePolicy
registrazione dispone dei logs:DescribeLogGroups
permessi e per il gruppo di log, crea AWS automaticamente la seguente politica quando si inizia a inviare i log a CloudWatch Logs. logs:DescribeResourcePolicies
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:
us-east-1
:0123456789
:log-group:my-log-group
:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } } ] }
Se il gruppo di log dispone di una policy delle risorse, ma tale policy non contiene l'istruzione mostrata nel policy precedente e l'utente che imposta la registrazione ha le autorizzazioni logs:PutResourcePolicy
, logs:DescribeResourcePolicies
, e logs:DescribeLogGroups
per il gruppo di log, tale istruzione viene aggiunta al policy delle risorse del gruppo di log.
Considerazioni relative al limite delle dimensioni delle policy delle risorse del gruppo di log
Questi servizi devono elencare ogni gruppo di log a cui inviano i log nella politica delle risorse e le politiche delle risorse di CloudWatch Logs sono limitate a 5120 caratteri. Un servizio che invia log a un gran numero di gruppi di log potrebbe raggiungere questo limite.
Per mitigare questo problema, CloudWatch Logs monitora la dimensione delle politiche relative alle risorse utilizzate dal servizio che invia i log e, quando rileva che una policy si avvicina al limite di dimensione di 5120 caratteri, CloudWatch Logs /aws/vendedlogs/*
abilita automaticamente la politica delle risorse per quel servizio. Quindi puoi iniziare a utilizzare gruppi di log con nomi che iniziano con /aws/vendedlogs/
come destinazioni per i log di questi servizi.
Log inviati ad Amazon S3
Quando imposti i log da inviare ad Amazon S3 AWS , crea o modifica le politiche delle risorse associate al bucket S3 che riceve i log, se necessario.
I log pubblicati in Amazon S3 vengono pubblicati in un bucket esistente da te specificato. Uno o più file di log vengono creati ogni cinque minuti nel bucket specificato.
Quando invii i log per la prima volta a un bucket Amazon S3, il servizio che consegna i log registra il proprietario del bucket per assicurarsi che i log vengano consegnati solo a un bucket appartenente a questo account. Di conseguenza, per modificare il proprietario del bucket Amazon S3, devi ricreare o aggiornare la sottoscrizione del log nel servizio di origine.
Nota
CloudFront utilizza un modello di autorizzazioni diverso rispetto agli altri servizi che inviano i log forniti a S3. Per ulteriori informazioni, consulta Autorizzazioni richieste per configurare la registrazione standard e per accedere ai file di log.
Inoltre, se utilizzi lo stesso bucket S3 per i log di CloudFront accesso e un'altra fonte di log, l'attivazione ACL sul bucket for concede CloudFront anche l'autorizzazione a tutte le altre fonti di log che utilizzano questo bucket.
Importante
Se stai inviando log a un bucket Amazon S3 e la policy del bucket contiene NotAction
un elemento NotPrincipal
or, l'aggiunta automatica delle autorizzazioni di consegna dei log al bucket e la creazione di un abbonamento di log avranno esito negativo. Per creare correttamente un abbonamento di log, devi aggiungere manualmente le autorizzazioni di consegna dei log alla policy del bucket, quindi creare l'abbonamento di log. Per ulteriori informazioni, consulta le istruzioni in questa sezione.
Se il bucket dispone di una crittografia lato server che utilizza una AWS KMS chiave gestita dal cliente, è necessario aggiungere anche la policy relativa alla chiave gestita dal cliente. Per ulteriori informazioni, consulta Amazon S3.
Autorizzazioni degli utenti
Per poter configurare l'invio di uno di questi tipi di log ad Amazon S3 per la prima volta, devi aver effettuato l'accesso a un account con le seguenti autorizzazioni.
logs:CreateLogDelivery
S3:GetBucketPolicy
S3:PutBucketPolicy
Se uno qualsiasi di questi tipi di log è già stato inviato a un bucket Amazon S3, quindi per impostare l'invio di un altro di questi tipi di log allo stesso bucket è sufficiente disporre del autorizzazione logs:CreateLogDelivery
.
Policy delle risorse di bucket S3
Il bucket S3 in cui vengono inviati i log deve disporre di una policy delle risorse che include determinate autorizzazioni. Se il bucket attualmente non dispone di una politica delle risorse e l'utente che configura la registrazione dispone delle autorizzazioni S3:GetBucketPolicy
e S3:PutBucketPolicy
delle autorizzazioni per il bucket, crea AWS automaticamente la seguente politica quando inizi a inviare i log ad Amazon S3.
{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } } ] }
Nella politica precedente, peraws:SourceAccount
, specifica l'elenco degli account IDS per i quali i log vengono consegnati a questo bucket. Peraws:SourceArn
, specifica l'elenco ARNs della risorsa che genera i log, nel modulo. arn:aws:logs:
source-region
:source-account-id
:*
Se il bucket dispone di una policy delle risorse, ma tale criterio non contiene l'istruzione mostrata nella policy precedente e l'utente che imposta la registrazione ha le autorizzazioni S3:GetBucketPolicy
e S3:PutBucketPolicy
per il bucket, tale istruzione viene aggiunta alla policy delle risorse del bucket.
Nota
In alcuni casi, è possibile che vengano visualizzati AccessDenied
degli errori AWS CloudTrail se l's3:ListBucket
autorizzazione non è stata concessadelivery.logs.amazonaws.com
. Per evitare questi errori nei CloudTrail log, è necessario concedere l's3:ListBucket
autorizzazione delivery.logs.amazonaws.com
e includere Condition
i parametri mostrati con l's3:GetBucketAcl
autorizzazione impostata nella precedente policy del bucket. Per renderlo più semplice, invece di creare una nuova Statement
, puoi aggiornar direttamenteAWSLogDeliveryAclCheck
per essere “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]
Crittografia lato server di bucket Amazon S3
Puoi proteggere i dati nel tuo bucket Amazon S3 abilitando la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) o la crittografia lato server con una chiave archiviata in (-). AWS KMS AWS Key Management Service SSE KMS Per ulteriori informazioni, consulta Protezione dei dati con la crittografia lato server.
Se scegli -S3, non è richiesta alcuna configurazione aggiuntiva. SSE Amazon S3 gestisce la chiave di crittografia.
avvertimento
Se si sceglie SSE -KMS, è necessario utilizzare una chiave gestita dal cliente, poiché l'utilizzo di una chiave AWS gestita non è supportato in questo scenario. Se si configura la crittografia utilizzando una chiave AWS gestita, i log verranno consegnati in un formato illeggibile.
Quando utilizzi una AWS KMS chiave gestita dal cliente, puoi specificare l'Amazon Resource Name (ARN) della chiave gestita dal cliente quando abiliti la crittografia dei bucket. È necessario aggiungere quanto segue alla policy della chiave per la chiave gestita dal cliente (non alla policy di bucket per il bucket S3), in modo che l'account di consegna del log possa scrivere nel bucket S3.
Se scegli SSE -KMS, devi utilizzare una chiave gestita dal cliente, poiché l'utilizzo di una chiave AWS gestita non è supportato in questo scenario. Quando utilizzi una AWS KMS chiave gestita dal cliente, puoi specificare l'Amazon Resource Name (ARN) della chiave gestita dal cliente quando abiliti la crittografia dei bucket. È necessario aggiungere quanto segue alla policy della chiave per la chiave gestita dal cliente (non alla policy di bucket per il bucket S3), in modo che l'account di consegna del log possa scrivere nel bucket S3.
{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } }
Peraws:SourceAccount
, specifica l'elenco degli account IDS per i quali i log vengono consegnati a questo bucket. Peraws:SourceArn
, specifica l'elenco ARNs della risorsa che genera i log, nel modulo. arn:aws:logs:
source-region
:source-account-id
:*
Log inviati a Firehose
Questa sezione si applica quando i tipi di log elencati nella tabella della sezione precedente vengono inviati a Firehose:
Autorizzazioni degli utenti
Per poter configurare l'invio di uno di questi tipi di log a Firehose per la prima volta, è necessario accedere a un account con le seguenti autorizzazioni.
logs:CreateLogDelivery
firehose:TagDeliveryStream
iam:CreateServiceLinkedRole
Se uno di questi tipi di log viene già inviato a Firehose, per configurare l'invio di un altro di questi tipi di log a Firehose è necessario disporre solo delle autorizzazioni and. logs:CreateLogDelivery
firehose:TagDeliveryStream
IAMruoli utilizzati per le autorizzazioni
Poiché Firehose non utilizza policy relative alle risorse, AWS utilizza i IAM ruoli durante la configurazione di questi log da inviare a Firehose. AWS crea un ruolo collegato al servizio denominato AWSServiceRoleForLogDelivery. Questo ruolo collegato al servizio include le seguenti autorizzazioni.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }
Questo ruolo collegato al servizio concede l'autorizzazione per tutti i flussi di distribuzione Firehose con il tag impostato su. LogDeliveryEnabled
true
AWS assegna questo tag al flusso di consegna di destinazione quando si configura la registrazione.
Questo ruolo collegato al servizio dispone inoltre di una policy di attendibilità che autorizzi il principale del servizio delivery.logs.amazonaws.com
di assumere il ruolo collegato al servizio necessario. Questa policy di attendibilità è la seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Registrazione che richiede autorizzazioni aggiuntive [V2]
Alcuni AWS servizi utilizzano un nuovo metodo per inviare i propri log. Si tratta di un metodo flessibile che consente di configurare la consegna dei log da questi servizi verso una o più delle seguenti destinazioni: CloudWatch Logs, Amazon S3 o Firehose.
La consegna di un log funzionante è composta da tre elementi:
A
DeliverySource
, che è un oggetto logico che rappresenta le risorse che effettivamente inviano i log.A
DeliveryDestination
, che è un oggetto logico che rappresenta la destinazione di consegna effettiva.A
Delivery
, che collega una fonte di consegna alla destinazione di consegna
Per configurare la consegna dei log tra un AWS servizio supportato e una destinazione, devi fare quanto segue:
Crea una fonte di consegna con PutDeliverySource.
Crea una destinazione di consegna con PutDeliveryDestination.
Se stai consegnando i log su più account, devi utilizzarli PutDeliveryDestinationPolicynell'account di destinazione per assegnare una IAM politica alla destinazione. Questa politica autorizza la creazione di una consegna dalla fonte di consegna nell'account A alla destinazione di consegna nell'account B. Per la consegna tra account, è necessario creare manualmente le politiche di autorizzazione.
Crea una consegna associando esattamente una fonte di consegna e una destinazione di consegna, utilizzando. CreateDelivery
Le sezioni seguenti forniscono i dettagli delle autorizzazioni necessarie quando si effettua l'accesso per configurare la consegna dei log a ciascun tipo di destinazione utilizzando il processo V2. Queste autorizzazioni possono essere concesse a un IAM ruolo con cui hai effettuato l'accesso.
Importante
È responsabilità dell'utente rimuovere le risorse per la consegna dei log dopo aver eliminato la risorsa che genera i log. A tale scopo, segui questi passaggi.
Eliminare il
Delivery
utilizzando l'DeleteDeliveryoperazione.Eliminare il
DeliverySource
utilizzando l'DeleteDeliverySourceoperazione.Se l'
DeliveryDestination
elemento associato aDeliverySource
quello che hai appena eliminato viene utilizzato solo per questo specificoDeliverySource
, puoi rimuoverlo utilizzando l'DeleteDeliveryDestinationsoperazione.
Indice
Registri inviati a CloudWatch Logs
Autorizzazioni degli utenti
Per abilitare l'invio dei log ai CloudWatch registri, è necessario accedere con le seguenti autorizzazioni.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyCWL", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region
:account-id
:*" ] } ] }
Policy delle risorse del gruppo di log
Il gruppo di log in cui vengono inviati i log deve disporre di una policy delle risorse che includa determinate autorizzazioni. Se al momento il gruppo di log non dispone di una politica in materia di risorse e l'utente che configura la logs:PutResourcePolicy
registrazione dispone logs:DescribeLogGroups
delle autorizzazioni relative al gruppo di log, crea AWS automaticamente la seguente politica quando si inizia a inviare i log a Logs. logs:DescribeResourcePolicies
CloudWatch
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:
us-east-1
:0123456789
:log-group:my-log-group
:log-stream:*" ], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:*"] } } } ] }
Considerazioni relative al limite delle dimensioni delle policy delle risorse del gruppo di log
Questi servizi devono elencare ogni gruppo di log a cui inviano i log nella politica delle risorse e le politiche delle risorse di CloudWatch Logs sono limitate a 5120 caratteri. Un servizio che invia i log a un numero elevato di gruppi di log potrebbe rientrare in questo limite.
Per mitigare questo problema, CloudWatch Logs monitora la dimensione delle politiche relative alle risorse utilizzate dal servizio che invia i log e, quando rileva che una policy si avvicina al limite di dimensione di 5120 caratteri, CloudWatch Logs abilita automaticamente la politica delle risorse per quel servizio. /aws/vendedlogs/*
Quindi puoi iniziare a utilizzare gruppi di log con nomi che iniziano con /aws/vendedlogs/
come destinazioni per i log di questi servizi.
Log inviati ad Amazon S3
Autorizzazioni degli utenti
Per abilitare l'invio di log ad Amazon S3, devi aver effettuato l'accesso con le seguenti autorizzazioni.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyS3", "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::bucket-name" } ] }
Il bucket S3 in cui vengono inviati i log deve disporre di una policy delle risorse che include determinate autorizzazioni. Se il bucket attualmente non dispone di una politica delle risorse e l'utente che configura la registrazione dispone delle autorizzazioni S3:GetBucketPolicy
e S3:PutBucketPolicy
delle autorizzazioni per il bucket, crea AWS automaticamente la seguente politica quando inizi a inviare i log ad Amazon S3.
{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:delivery-source*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/account-ID
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:delivery-source:*"] } } } ] }
Nella politica precedente, peraws:SourceAccount
, specifica l'elenco degli account IDS per i quali i log vengono consegnati a questo bucket. Peraws:SourceArn
, specifica l'elenco ARNs della risorsa che genera i log, nel modulo. arn:aws:logs:
source-region
:source-account-id
:*
Se il bucket dispone di una policy delle risorse, ma tale criterio non contiene l'istruzione mostrata nella policy precedente e l'utente che imposta la registrazione ha le autorizzazioni S3:GetBucketPolicy
e S3:PutBucketPolicy
per il bucket, tale istruzione viene aggiunta alla policy delle risorse del bucket.
Nota
In alcuni casi, è possibile che vengano visualizzati AccessDenied
degli errori AWS CloudTrail se l's3:ListBucket
autorizzazione non è stata concessadelivery.logs.amazonaws.com
. Per evitare questi errori nei CloudTrail log, è necessario concedere l's3:ListBucket
autorizzazione delivery.logs.amazonaws.com
e includere Condition
i parametri mostrati con l's3:GetBucketAcl
autorizzazione impostata nella precedente policy del bucket. Per renderlo più semplice, invece di creare una nuova Statement
, puoi aggiornar direttamenteAWSLogDeliveryAclCheck
per essere “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]
Crittografia lato server di bucket Amazon S3
Puoi proteggere i dati nel tuo bucket Amazon S3 abilitando la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3) o la crittografia lato server con una chiave archiviata in (-). AWS KMS AWS Key Management Service SSE KMS Per ulteriori informazioni, consulta Protezione dei dati con la crittografia lato server.
Se scegli -S3, non è richiesta alcuna configurazione aggiuntiva. SSE Amazon S3 gestisce la chiave di crittografia.
avvertimento
Se si sceglie SSE -KMS, è necessario utilizzare una chiave gestita dal cliente, poiché l'utilizzo di una chiave AWS gestita non è supportato in questo scenario. Se si configura la crittografia utilizzando una chiave AWS gestita, i log verranno consegnati in un formato illeggibile.
Quando utilizzi una AWS KMS chiave gestita dal cliente, puoi specificare l'Amazon Resource Name (ARN) della chiave gestita dal cliente quando abiliti la crittografia dei bucket. È necessario aggiungere quanto segue alla policy della chiave per la chiave gestita dal cliente (non alla policy di bucket per il bucket S3), in modo che l'account di consegna del log possa scrivere nel bucket S3.
Se scegli SSE -KMS, devi utilizzare una chiave gestita dal cliente, poiché l'utilizzo di una chiave AWS gestita non è supportato in questo scenario. Quando utilizzi una AWS KMS chiave gestita dal cliente, puoi specificare l'Amazon Resource Name (ARN) della chiave gestita dal cliente quando abiliti la crittografia dei bucket. È necessario aggiungere quanto segue alla policy della chiave per la chiave gestita dal cliente (non alla policy di bucket per il bucket S3), in modo che l'account di consegna del log possa scrivere nel bucket S3.
{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:delivery-source:*"] } } }
Peraws:SourceAccount
, specifica l'elenco degli account IDS per i quali i log vengono consegnati a questo bucket. Peraws:SourceArn
, specifica l'elenco ARNs della risorsa che genera i log, nel modulo. arn:aws:logs:
source-region
:source-account-id
:*
Log inviati a Firehose
Autorizzazioni degli utenti
Per abilitare l'invio di log a Firehose, è necessario accedere con le seguenti autorizzazioni.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyFH", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": [ "arn:aws:firehose:region
:account-id
:deliverystream/*" ] }, { "Sid": "CreateServiceLinkedRole", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::account-id
:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery" } ] }
IAMruoli utilizzati per le autorizzazioni delle risorse
Poiché Firehose non utilizza policy relative alle risorse, AWS utilizza i IAM ruoli durante la configurazione di questi log da inviare a Firehose. AWS crea un ruolo collegato al servizio denominato AWSServiceRoleForLogDelivery. Questo ruolo collegato al servizio include le seguenti autorizzazioni.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }
Questo ruolo collegato al servizio concede l'autorizzazione per tutti i flussi di distribuzione Firehose con il tag impostato su. LogDeliveryEnabled
true
AWS assegna questo tag al flusso di consegna di destinazione quando si configura la registrazione.
Questo ruolo collegato al servizio dispone inoltre di una policy di attendibilità che autorizzi il principale del servizio delivery.logs.amazonaws.com
di assumere il ruolo collegato al servizio necessario. Questa policy di attendibilità è la seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Autorizzazioni specifiche del servizio
Oltre alle autorizzazioni specifiche della destinazione elencate nelle sezioni precedenti, alcuni servizi richiedono un'autorizzazione esplicita per consentire ai clienti di inviare i log dalle proprie risorse, come ulteriore livello di sicurezza. Autorizza l'AllowVendedLogDeliveryForResource
azione per le risorse che vendono i log all'interno di quel servizio. Per questi servizi, utilizza la seguente politica e sostituisci service
e resource-type
con i valori appropriati. Per i valori specifici del servizio per questi campi, consulta la pagina della documentazione di tali servizi per i registri forniti.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "
service
:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:service
:region
:account-id
:resource-type
/*" } ] }
Autorizzazioni specifiche per la console
Oltre alle autorizzazioni elencate nelle sezioni precedenti, se si configura la consegna dei log utilizzando la console anziché ilAPIs, sono necessarie anche le seguenti autorizzazioni aggiuntive:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:
111122223333
:log-group:*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleS3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleFH", "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "firehose:DescribeDeliveryStream" ], "Resource": [ "*" ] } ] }
Esempio di distribuzione tra account
In questo esempio, sono coinvolti due account. L'account con la risorsa che genera i log è l'account A, ID: AAAAAAAAAAAA
e l'account con la risorsa che consuma log è l'account B, ID: BBBBBBBBBBBB
.
L'account A desidera inserire i log della Amazon Bedrock knowledge base nel proprio account con il file arn:aws:bedrock: ARNregion
:AAAAAAAAAAAA
: knowledge-base/XXXXXXXXXX
.
Per questo esempio, l'account A necessita delle seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowVendedLogDeliveryForKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:bedrock:
region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
" }, { "Sid": "CreateLogDeliveryPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliverySource", "logs:CreateDelivery" ], "Resource": [ "arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:*", "arn:aws:logs:region
:AAAAAAAAAAAA
:delivery:*", "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:*" ] } ] }
Crea una fonte di consegna
Per iniziare, l'account A crea una fonte di consegna con la sua base di conoscenze di base:
aws logs put-delivery-source --name my-delivery-source --log-type APPLICATION_LOGS --resource-arn arn:aws:bedrock:
region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
Successivamente, l'account B deve creare la destinazione di consegna utilizzando uno dei flussi seguenti:
Configurare la consegna a un bucket Amazon S3
L'account B desidera ricevere i log nel proprio bucket S3 con il bucket ARN arn:aws:s3: :amzn-s3-demo-bucket Per questo esempio, l'account B avrà bisogno delle seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutLogDestinationPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:*" } ] }
Il bucket avrà bisogno delle seguenti autorizzazioni nella sua politica relativa al bucket:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/
AAAAAAAAAAAA
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["AAAAAAAAAAAA
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:my-delivery-source"] } } } ] }
Se il bucket è crittografato con SSE -KMS, assicurati che la policy della AWS KMS chiave disponga delle autorizzazioni appropriate. Ad esempio, se la KMS chiave èarn:aws:kms:
, usa quanto segue: region
:BBBBBBBBBBBB
:key/X
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogsGenerateDataKey", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" } "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:BBBBBBBBBBBB
:key/X
", "Condition": { "StringEquals": { "aws:SourceAccount": ["AAAAAAAAAAAA
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:my-delivery-source"] } } } ] }
L'account B può quindi creare una destinazione di consegna con il bucket S3 come risorsa di destinazione:
aws logs put-delivery-destination --name my-s3-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket"
Successivamente, l'Account B crea una politica sulla destinazione di consegna sulla destinazione di consegna appena creata, che autorizzerà l'Account A a creare una consegna registrata. La politica che verrà aggiunta alla destinazione di consegna appena creata è la seguente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "
AAAAAAAAAAAA
" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:my-s3-delivery-destination" } ] }
Questa politica verrà salvata nel computer dell'Account B come destination-policy-s3.json
Per collegare questa risorsa, l'Account B eseguirà il seguente comando:
aws logs put-delivery-destination-policy --delivery-destination-name my-s3-delivery-destination --delivery-destination-policy file://destination-policy-s3.json
Infine, l'Account A crea la consegna, che collega la fonte di consegna nell'Account A alla destinazione di consegna nell'Account B.
aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:my-s3-delivery-destination
Configurare la consegna a uno stream Firehose
In questo esempio, l'account B desidera ricevere i log nel proprio stream Firehose. Lo stream Firehose presenta le seguenti caratteristiche ARN ed è configurato per utilizzare il tipo di flusso DirectPut di distribuzione:
arn:aws:firehose:
region
:BBBBBBBBBBBB
:deliverystream/X
Per questo esempio, l'account B necessita delle seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFirehoseCreateSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::
BBBBBBBBBBBB
:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery", }, { "Sid": "AllowFirehoseTagging", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": "arn:aws:firehose:region
:BBBBBBBBBBBB
:deliverystream/X
" }, { "Sid": "AllowFirehoseDeliveryDestination", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:*" } ] }
Lo stream Firehose deve avere il tag LogDeliveryEnabled
impostato su. true
L'account B creerà quindi una destinazione di consegna con lo stream Firehose come risorsa di destinazione:
aws logs put-delivery-destination --name my-fh-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:firehose:
region
:BBBBBBBBBBBB
:deliverystream/X
"
Successivamente, l'Account B crea una politica sulla destinazione di consegna sulla destinazione di consegna appena creata, che autorizzerà l'Account A a creare una consegna di log. La politica da aggiungere alla destinazione di consegna appena creata è la seguente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "
AAAAAAAAAAAA
" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:my-fh-delivery-destination" } ] }
Questa politica verrà salvata nel computer dell'Account B poiché destination-policy-fh.json
Per collegare questa risorsa, l'Account B esegue il seguente comando:
aws logs put-delivery-destination-policy --delivery-destination-name my-fh-delivery-destination --delivery-destination-policy file://destination-policy-fh.json
Infine, l'Account A crea la consegna, che collega la fonte di consegna nell'Account A alla destinazione di consegna nell'Account B.
aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:my-fh-delivery-destination
Prevenzione del confused deputy tra servizi
Con "confused deputy" si intende un problema di sicurezza in cui un'entità che non dispone dell'autorizzazione per eseguire una certa operazione può costringere un'entità con più privilegi a eseguire tale operazione. Nel frattempo AWS, l'impersonificazione tra diversi servizi può portare al confuso problema del vicesceriffo. La rappresentazione tra servizi può verificarsi quando un servizio (il servizio chiamante) effettua una chiamata a un altro servizio (il servizio chiamato). Il servizio chiamante può essere manipolato per utilizzare le proprie autorizzazioni e agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso. Per evitare ciò, AWS fornisce strumenti per poterti a proteggere i tuoi dati per tutti i servizi con entità di servizio a cui è stato concesso l'accesso alle risorse del tuo account.
Si consiglia di utilizzare le chiavi contestuali aws:SourceArn
aws:SourceAccount
, aws:SourceOrgID
, e aws:SourceOrgPaths
global condition nelle politiche delle risorse per limitare le autorizzazioni che CloudWatch Logs concede a un altro servizio alla risorsa. aws:SourceArn
Da utilizzare per associare solo una risorsa all'accesso tra servizi. Utilizzato aws:SourceAccount
per consentire che qualsiasi risorsa in quell'account venga associata all'utilizzo tra servizi. Utilizzato aws:SourceOrgID
per consentire l'associazione di qualsiasi risorsa di qualsiasi account all'interno di un'organizzazione all'utilizzo tra servizi. Da utilizzare aws:SourceOrgPaths
per associare qualsiasi risorsa proveniente dagli account all'interno di un AWS Organizations percorso all'utilizzo tra servizi. Per ulteriori informazioni sull'utilizzo e la comprensione dei percorsi, vedi Comprendere il percorso dell' AWS Organizations entità.
Il modo più efficace per proteggersi dal confuso problema del vicesceriffo consiste nell'utilizzare la chiave di contesto ARN della condizione aws:SourceArn
globale con l'intera risorsa. Se non conosci la dimensione completa ARN della risorsa o se stai specificando più risorse, usa la chiave aws:SourceArn
global context condition con caratteri jolly (*
) per le parti sconosciute di. ARN Ad esempio arn:aws:
. servicename
:*:123456789012
:*
Se il aws:SourceArn
valore non contiene l'ID dell'account, ad esempio un bucket Amazon S3ARN, devi utilizzarli entrambi aws:SourceAccount
e aws:SourceArn
limitare le autorizzazioni.
Per proteggersi dal problema "confused deputy" su larga scala, nelle policy basate sulle risorse utilizza la chiave di contesto della condizione globale aws:SourceOrgID
o aws:SourceOrgPaths
con l'ID dell'organizzazione o il percorso dell'organizzazione della risorsa. Quando aggiungi, rimuovi o sposti degli account all’interno dell’organizzazione, le policy che includono la chiave aws:SourceOrgID
o aws:SourceOrgPaths
includono automaticamente anche gli account corretti e non necessitano dell'aggiornamento manuale.
Le policy nelle sezioni precedenti di questa pagina mostrano come è possibile utilizzare le chiavi di contesto delle condizioni globali aws:SourceArn
e aws:SourceAccount
per prevenire il problema "confused deputy".
CloudWatch Registra gli aggiornamenti delle politiche gestite AWS
Visualizza i dettagli sugli aggiornamenti alle politiche AWS gestite per CloudWatch Logs da quando questo servizio ha iniziato a tenere traccia di queste modifiche. Per ricevere avvisi automatici sulle modifiche a questa pagina, iscriviti al RSS feed nella pagina di cronologia dei documenti di CloudWatch Logs.
Modifica | Descrizione | Data |
---|---|---|
AWSServiceRoleForLogDelivery politica relativa ai ruoli collegati ai servizi: aggiornamento a una politica esistente |
CloudWatch I log hanno modificato le autorizzazioni nella politica associata a IAM AWSServiceRoleForLogDeliveryruolo collegato al servizio. È stata apportata la seguente modifica:
|
15 luglio 2021 |
CloudWatch I log hanno iniziato a tenere traccia delle modifiche |
CloudWatch Logs ha iniziato a tenere traccia delle modifiche relative alle politiche AWS gestite. |
10 giugno 2021 |