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à.
Esempi di casi per il controllo degli accessi Amazon SNS
Questa sezione include alcuni esempi di casi d'uso tipici per il controllo accessi.
Grant Account AWS accesso a un argomento
Supponiamo che tu abbia un argomento in Amazon SNS e desideri consentire a uno o più di Account AWS eseguire un'azione specifica su quell'argomento, come la pubblicazione di messaggi. Puoi farlo utilizzando l'azione API Amazon SNS. AddPermission
L'AddPermissionazione consente di specificare un argomento, un elenco di Account AWS ID, un elenco di azioni e un'etichetta. Amazon SNS quindi genera e aggiunge automaticamente una nuova dichiarazione politica alla politica di controllo degli accessi dell'argomento. Non devi scrivere tu stesso la dichiarazione politica: Amazon SNS se ne occupa per te. Se hai bisogno di rimuovere la policy in un secondo momento, puoi farlo chiamando RemovePermission e fornendo l'etichetta che hai usato per aggiungere l'autorizzazione.
Ad esempio, se AddPermission richiami l'argomento arn:aws:sns:us-east- 2:444455556666:MyTopic, specifichi l' Account AWS ID 1111-2222-3333, l'Publishazione e l'etichetta, Amazon SNS genererà e inserirà la seguente dichiarazione politica nella politica di grant-1234-publish controllo degli accessi dell'argomento:
{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }
Dopo aver aggiunto questa dichiarazione, il 1111-2222-3333 avrà il permesso di pubblicare messaggi sull'argomento. Account AWS
Informazioni aggiuntive:
-
Gestione delle policy personalizzate: sebbene
AddPermissionsia utile per concedere autorizzazioni, è spesso utile gestire manualmente la politica di controllo degli accessi dell'argomento per scenari più complessi, come l'aggiunta di condizioni o la concessione di autorizzazioni a ruoli o servizi IAM specifici. Puoi farlo utilizzando l'SetTopicAttributesAPI per aggiornare direttamente l'attributo della policy. -
Best practice di sicurezza: fai attenzione quando concedi le autorizzazioni per assicurarti che solo le entità attendibili Account AWS abbiano accesso ai tuoi argomenti di Amazon SNS. Rivedi e verifica regolarmente le politiche allegate ai tuoi argomenti per mantenere la sicurezza.
-
Limiti delle policy: tieni presente che esistono limiti alla dimensione e alla complessità delle policy di Amazon SNS. Se devi aggiungere molte autorizzazioni o condizioni complesse, assicurati che la tua polizza rimanga entro questi limiti.
Limitazione delle sottoscrizioni a HTTPS
Per limitare il protocollo di invio delle notifiche per il tuo argomento Amazon SNS a HTTPS, devi creare una policy personalizzata. L'AddPermissionazione in Amazon SNS non ti consente di specificare restrizioni di protocollo quando concedi l'accesso al tuo argomento. Pertanto, devi scrivere manualmente una policy che applichi questa restrizione e quindi utilizzare l'SetTopicAttributesazione per applicarla al tuo argomento.
Ecco come puoi creare una policy che limiti gli abbonamenti a HTTPS:
-
Scrivi la policy. La policy deve specificare l' Account AWS ID a cui si desidera concedere l'accesso e applicare la condizione che siano consentite solo le sottoscrizioni HTTPS. Di seguito è riportato un esempio di policy che concede all' Account AWS ID 1111-2222-3333 il permesso di sottoscrivere l'argomento, ma solo se il protocollo utilizzato è HTTPS.
{ "Statement": [{ "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Subscribe"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "sns:Protocol": "https" } } }] } -
Applica la policy. Usa l'
SetTopicAttributesazione nell'API Amazon SNS per applicare questa policy al tuo argomento. Imposta l'Policyattributo dell'argomento sulla policy JSON che hai creato.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:444455556666:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Informazioni aggiuntive:
-
Personalizzazione del controllo degli accessi. Questo approccio consente di applicare controlli di accesso più granulari, come la limitazione dei protocolli di abbonamento, cosa impossibile attraverso la
AddPermissionsola azione. Le policy personalizzate offrono flessibilità per scenari che richiedono condizioni specifiche, come l'applicazione del protocollo o le restrizioni degli indirizzi IP. -
Le migliori pratiche di sicurezza. La limitazione degli abbonamenti a HTTPS migliora la sicurezza delle notifiche garantendo che i dati in transito siano crittografati. Rivedi regolarmente le tue politiche tematiche per assicurarti che soddisfino i tuoi requisiti di sicurezza e conformità.
-
Test delle politiche. Prima di applicare la policy in un ambiente di produzione, testatela in un ambiente di sviluppo per assicurarvi che si comporti come previsto. Questo aiuta a prevenire problemi di accesso accidentali o restrizioni non intenzionali.
Pubblicare messaggi in una coda Amazon SQS.
Per pubblicare messaggi dal tuo argomento Amazon SNS in una coda Amazon SQS, devi configurare le autorizzazioni corrette sulla coda Amazon SQS. Sebbene sia Amazon SNS che Amazon SQS utilizzino il linguaggio delle policy AWS di controllo degli accessi, devi impostare esplicitamente una policy sulla coda Amazon SQS per consentire l'invio di messaggi dall'argomento Amazon SNS.
È possibile ottenere ciò utilizzando l'SetQueueAttributesazione per applicare una policy personalizzata alla coda Amazon SQS. A differenza di Amazon SNS, Amazon SQS non supporta l'AddPermissionazione per la creazione di dichiarazioni di policy con condizioni. Pertanto, è necessario scrivere la policy manualmente.
Di seguito è riportato un esempio di policy Amazon SQS che concede ad Amazon SNS l'autorizzazione a inviare messaggi alla tua coda. Tieni presente che questa politica è associata alla coda Amazon SQS, non all'argomento Amazon SNS. Le azioni specificate sono azioni Amazon SQS e la risorsa è l'Amazon Resource Name (ARN) della coda. Puoi recuperare l'ARN della coda utilizzando l'azione. GetQueueAttributes
{ "Statement": [{ "Sid": "Allow-SNS-SendMessage", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": ["sqs:SendMessage"], "Resource": "arn:aws:sqs:us-east-2:444455556666:MyQueue", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sns:us-east-2:444455556666:MyTopic" } } }] }
Questa policy utilizza la aws:SourceArn condizione per limitare l'accesso alla coda SQS in base all'origine dei messaggi inviati. Ciò garantisce che solo i messaggi provenienti dall'argomento SNS specificato (in questo caso, arn:aws:sns:us-east- 2:444455556666:) possano essere recapitati alla coda. MyTopic
Informazioni aggiuntive:
-
Coda ARN. Assicurati di recuperare l'ARN corretto della tua coda Amazon SQS utilizzando l'azione.
GetQueueAttributesQuesto ARN è essenziale per impostare le autorizzazioni corrette. -
Le migliori pratiche di sicurezza. Quando stabilisci le politiche, segui sempre il principio del privilegio minimo. Concedi solo le autorizzazioni necessarie all'argomento Amazon SNS per interagire con la coda Amazon SQS e rivedi regolarmente le tue politiche per assicurarti che siano aggiornate e sicure
-
Politiche predefinite in Amazon SNS. Amazon SNS non concede automaticamente una policy predefinita che consenta ad altri Servizi AWS account di accedere agli argomenti appena creati. Per impostazione predefinita, gli argomenti di Amazon SNS vengono creati senza autorizzazioni, il che significa che sono privati e accessibili solo all'account che li ha creati. Per abilitare l'accesso ad altri Servizi AWS account o titolari, devi definire e allegare esplicitamente una politica di accesso all'argomento. Ciò è in linea con il principio del privilegio minimo, garantendo che per impostazione predefinita non venga concesso alcun accesso involontario.
-
Test e convalida. Dopo aver impostato la policy, verifica l'integrazione pubblicando messaggi sull'argomento Amazon SNS e verificando che vengano recapitati correttamente nella coda di Amazon SQS. Questo aiuta a confermare che la policy sia configurata correttamente.
Consentire la pubblicazione delle notifiche degli eventi Amazon S3 su un argomento
Per consentire a un bucket Amazon S3 di un altro di Account AWS pubblicare notifiche di eventi sul tuo argomento Amazon SNS, devi configurare di conseguenza la politica di accesso dell'argomento. Ciò comporta la scrittura di una policy personalizzata che conceda l'autorizzazione al servizio Amazon S3 da parte dello specifico Account AWS e quindi l'applicazione di questa politica all'argomento Amazon SNS.
Ecco come puoi configurarlo:
-
Scrivi la policy. La policy dovrebbe concedere al servizio Amazon S3 (s3.amazonaws.com) le autorizzazioni necessarie per la pubblicazione sul tuo argomento Amazon SNS. Utilizzerai
SourceAccountquesta condizione per assicurarti che solo il soggetto specificato Account AWS, proprietario del bucket Amazon S3, possa pubblicare notifiche relative al tuo argomento.Di seguito è riportato un esempio di policy:
{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic", "Condition": { "StringEquals": { "AWS:SourceAccount": "444455556666" } } }] }-
Proprietario dell'argomento: 111122223333 è l' Account AWS ID proprietario dell'argomento Amazon SNS.
-
Proprietario del bucket Amazon S3: 444455556666 è l' Account AWS ID che possiede il bucket Amazon S3 che invia notifiche.
-
-
Applica la policy. Usa l'
SetTopicAttributesazione per impostare questa policy sul tuo argomento Amazon SNS. Questo aggiornerà il controllo di accesso dell'argomento per includere le autorizzazioni specificate nella tua policy personalizzata.snsClient.setTopicAttributes(SetTopicAttributesRequest.builder() .topicArn("arn:aws:sns:us-east-2:111122223333:MyTopic") .attributeName("Policy") .attributeValue(jsonPolicyString) // The JSON policy as a string .build());
Informazioni aggiuntive:
-
SourceAccountCondizione di utilizzo. LaSourceAccountcondizione garantisce che solo gli eventi provenienti dal dato specificato Account AWS (444455556666 in questo caso) possano attivare l'argomento Amazon SNS. Si tratta di una misura di sicurezza per impedire agli account non autorizzati di inviare notifiche al tuo argomento. -
Altri servizi di supporto
SourceAccount. LaSourceAccountcondizione è supportata dai seguenti servizi. È fondamentale utilizzare questa condizione quando desideri limitare l'accesso all'argomento di Amazon SNS in base all'account di origine.-
Gateway Amazon API
-
Amazon CloudWatch
-
DevOpsGuru di Amazon
-
Amazon EventBridge
-
GameLift Server Amazon
-
Servizio di SMS e messaggi vocali Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon Glacier
-
Amazon SES
-
Amazon Simple Storage Service
-
AWS CodeCommit
-
Directory Service
-
AWS Lambda
-
Strumento di gestione degli incidenti AWS Systems Manager
-
-
Test e convalida. Dopo aver applicato la policy, verifica la configurazione attivando un evento nel bucket Amazon S3 e confermando che sia stato pubblicato correttamente nel tuo argomento Amazon SNS. Questo ti aiuterà a verificare che la tua policy sia configurata correttamente.
-
Le migliori pratiche di sicurezza. Rivedi e verifica regolarmente le tue policy tematiche di Amazon SNS per assicurarti che siano conformi ai tuoi requisiti di sicurezza. Limitare l'accesso solo ad account e servizi affidabili è essenziale per mantenere le operazioni sicure.
Consenti ad Amazon SES di pubblicare in un argomento di proprietà di un altro account
Puoi consentire Servizio AWS a un altro di pubblicare su un argomento di proprietà di un altro Account AWS. Supponiamo di aver effettuato l'accesso dall'account 111122223333, aperto Amazon SES e creato un'e-mail. Per pubblicare notifiche relative a questa e-mail in un argomento Amazon SNS proprietario dell'account 444455556666, bisogna creare una policy come la seguente. A tale scopo, è necessario fornire informazioni sull'entità principale (l'altro servizio) e sulla proprietà di ciascuna risorsa. La dichiarazione Resource fornisce l'argomento ARN, che include l'account ID del proprietario dell'argomento, 444455556666. La dichiarazione "aws:SourceOwner":
"111122223333" specifica che il tuo account è proprietario dell'e-mail.
Quando si pubblicano eventi su Amazon SNS, i seguenti servizi supportanoaws:SourceOwner:
-
Gateway Amazon API
-
Amazon CloudWatch
-
DevOpsGuru di Amazon
-
Server Amazon GameLift
-
Servizio di SMS e messaggi vocali Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
Directory Service
-
AWS Lambda
-
Strumento di gestione degli incidenti AWS Systems Manager
aws: SourceAccount contro aws: SourceOwner
Importante
aws:SourceOwner è obsoleto e i nuovi servizi possono integrarsi con Amazon SNS solo tramite e aws:SourceArn e aws:SourceAccount. Amazon SNS mantiene ancora la compatibilità con le versioni precedenti per i servizi esistenti che supportano attualmente aws:SourceOwner.
Le chiavi di condizione aws:SourceAccount e aws:SourceOwner sono impostate ciascuna da alcuni Servizi AWS quando pubblicano in un argomento Amazon SNS. Se supportato, il valore sarà l'ID dell'account a 12 cifre per AWS conto del quale il servizio pubblica i dati. Alcuni servizi supportano uno e altri supportano l'altro.
-
Scopri Consentire la pubblicazione delle notifiche degli eventi Amazon S3 su un argomento come vengono utilizzate le notifiche di Amazon S3
aws:SourceAccounte un elenco di AWS servizi che supportano tale condizione. -
Scopri Consenti ad Amazon SES di pubblicare in un argomento di proprietà di un altro account in che modo Amazon SES utilizza
aws:SourceOwnere un elenco di AWS servizi che supportano tale condizione.
Consenti account in un'organizzazione in AWS Organizations pubblicare su un argomento in un altro account
Il AWS Organizations servizio ti aiuta a gestire centralmente la fatturazione, controllare l'accesso e la sicurezza e condividere le risorse tra i tuoi. Account AWS
Puoi trovare l'ID organizzazione nella console Organizations
In questo esempio, qualsiasi Account AWS organizzazione myOrgId può pubblicare su Amazon SNS un argomento MyTopic associato all'account. 444455556666 La policy controlla il valore dell'ID organizzazione utilizzando la chiave di condizione globale aws:PrincipalOrgID.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "myOrgId" } } } ] }
Consenti a qualsiasi CloudWatch avviso di pubblicare su un argomento in un account diverso
Utilizza i seguenti passaggi per richiamare un argomento di Amazon SNS con un CloudWatch allarme tra diversi. Account AWS Questo esempio utilizza due account:
-
L'account A viene utilizzato per creare l' CloudWatch allarme.
-
L'account B viene utilizzato per creare un argomento SNS.
Crea un argomento SNS nell'account B
Accedi alla console Amazon SNS
. -
Nel riquadro di navigazione scegliere Argomenti, quindi Crea nuovo argomento.
-
Scegli Standard per il tipo di argomento, quindi crea un nome per l'argomento.
-
Scegli Crea argomento, quindi copia l'ARN dell'argomento.
-
Nel riquadro di navigazione scegliere Subscriptions (Sottoscrizioni), quindi selezionare Create subscription (Crea sottoscrizione).
-
Aggiungi l'ARN dell'argomento nella sezione ARN dell'argomento, scegli Email come protocollo, quindi inserisci un indirizzo email.
-
Scegli Crea abbonamento, quindi controlla la tua email per confermare l'abbonamento.
Crea un CloudWatch allarme nell'account A
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Nel pannello di navigazione, scegli Allarmi, quindi scegli Crea allarmi.
-
Se non hai già creato un allarme, creane uno adesso. Altrimenti, seleziona la metrica e fornisci i dettagli per la soglia e i parametri di confronto.
-
Da Configura azioni, in Notifiche, scegli Usa l'argomento ARN per notificare altri account, quindi inserisci l'argomento ARN dall'account B.
-
Crea un nome per l'avviso, quindi scegli Crea allarme.
Aggiorna la politica di accesso dell'argomento SNS nell'account B
Accedi alla console Amazon SNS
. -
Nel riquadro di navigazione, scegli Argomenti, quindi seleziona l'argomento.
-
Scegli Modifica, quindi aggiungi quanto segue alla policy:
Nota
Sostituisci i valori di esempio nella politica seguente con i tuoi.
Prova l'allarme
Per testare l'allarme, modificate la soglia di allarme in base ai punti dati metrici o modificate manualmente lo stato dell'allarme. Quando modifichi la soglia o lo stato di allarme, ricevi una notifica via email.
Soluzione alternativa per l'utilizzo di un argomento Amazon SNS locale e l'inoltro dei messaggi
Utilizza i seguenti passaggi per abilitare le notifiche Amazon SNS per gli allarmi su più account: CloudWatch
-
Crea un argomento Amazon SNS nello stesso account dell'CloudWatchavviso (111122223333).
-
Sottoscrivi una funzione Lambda o una EventBridge regola Amazon a quell'argomento Amazon SNS.
-
La funzione o EventBridge regola Lambda può quindi pubblicare il messaggio sull'argomento Amazon SNS nell'account di destinazione (444455556666).
Limitare la pubblicazione a un argomento Amazon SNS solo da un endpoint VPC specifico
In questo caso, l'argomento nell'account 444455556666 può pubblicare solo dall'endpoint VPC con l'ID vpce-1ab2c34d.
{ "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1ab2c34d" } } }] }