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.
Concedi Account AWS l'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. È possibile eseguire questa operazione utilizzando l'azione dell'API Amazon SNS. AddPermission
L'AddPermission
azione consente di specificare un argomento, un elenco di Account AWS IDs, un elenco di azioni e un'etichetta. Amazon SNS genera quindi e aggiunge automaticamente una nuova dichiarazione di policy alla policy di controllo degli accessi dell'argomento. Non è necessario che tu scriva tu stesso la dichiarazione sulla policy: Amazon SNS la gestisce per te. Se devi rimuovere la politica in un secondo momento, puoi farlo chiamando RemovePermission
e fornendo l'etichetta che hai usato per aggiungere l'autorizzazione.
Ad esempio, se AddPermission
chiami l'argomento arn:aws:sns:us-east- 2:444455556666:MyTopic, specifichi l' Account AWS ID 1111-2222-3333, l'Publish
azione e l'etichettagrant-1234-publish
, Amazon SNS genererà e inserirà la seguente dichiarazione di politica nella politica di 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, 1111-2222-3333 avrà l'autorizzazione a pubblicare messaggi sull'argomento. Account AWS
Informazioni aggiuntive:
-
Gestione personalizzata delle policy: sebbene
AddPermission
sia utile per concedere le autorizzazioni, spesso è utile gestire manualmente la policy 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'SetTopicAttributes
API per aggiornare direttamente l'attributo 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. Esamina 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 politica 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'AddPermission
azione in Amazon SNS non consente di specificare restrizioni di protocollo quando si concede l'accesso al proprio argomento. Pertanto, devi scrivere manualmente una politica che applichi questa restrizione e quindi utilizzare l'SetTopicAttributes
azione per applicare la politica al tuo argomento.
Ecco come puoi creare una politica che limiti gli abbonamenti a HTTPS:
-
Scrivi la politica. La politica deve specificare l' Account AWS ID a cui si desidera concedere l'accesso e imporre la condizione che siano consentiti solo gli abbonamenti HTTPS. Di seguito è riportato un esempio di politica 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 politica. Utilizza l'
SetTopicAttributes
azione nell'API Amazon SNS per applicare questa politica al tuo argomento. Imposta l'Policy
attributo 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 che non è possibile con la sola azione.
AddPermission
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 politiche relative agli argomenti per assicurarti che soddisfino i 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 AWS utilizzino il linguaggio delle policy di controllo degli accessi, è necessario impostare esplicitamente una policy sulla coda di Amazon SQS per consentire l'invio di messaggi dall'argomento Amazon SNS.
Puoi raggiungere questo obiettivo utilizzando l'SetQueueAttributes
azione per applicare una policy personalizzata alla coda di Amazon SQS. A differenza di Amazon SNS, Amazon SQS non supporta AddPermission
l'azione per la creazione di dichiarazioni politiche con condizioni. Pertanto, è necessario scrivere la policy manualmente.
Di seguito è riportato un esempio di policy di Amazon SQS che concede ad Amazon SNS l'autorizzazione a inviare messaggi alla tua coda. Tieni presente che questa policy è 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. È possibile 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" } } }] }
Questo criterio 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.
GetQueueAttributes
Questo ARN è essenziale per impostare le autorizzazioni corrette. -
Le migliori pratiche di sicurezza. Quando imposti 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 sicure. up-to-date
-
Politiche predefinite in Amazon SNS. Amazon SNS non concede automaticamente una policy predefinita che consenta ad altri account Servizi AWS 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 consentire l'accesso ad altri Servizi AWS account o responsabili, devi definire e allegare esplicitamente una politica di accesso all'argomento. Ciò è in linea con il principio del privilegio minimo, che garantisce 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 alla 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 stesura di una policy personalizzata che conceda l'autorizzazione al servizio Amazon S3 dall'utente Account AWS specifico e quindi l'applicazione di questa politica all'argomento relativo ad Amazon SNS.
Ecco come puoi configurarlo:
-
Scrivi la politica. La policy dovrebbe garantire il servizio Amazon S3 (s3.amazonaws.com) le autorizzazioni necessarie per pubblicare sul tuo argomento Amazon SNS. Utilizzerai la
SourceAccount
condizione per assicurarti che solo l'utente specificato Account AWS, che possiede il bucket Amazon S3, possa pubblicare notifiche sul 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 proprietario del bucket Amazon S3 per l'invio delle notifiche.
-
-
Applica la policy. Usa l'
SetTopicAttributes
azione per impostare questa politica sul tuo argomento Amazon SNS. Ciò aggiornerà il controllo degli accessi dell'argomento per includere le autorizzazioni specificate nella politica 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:
-
SourceAccount
Condizione d'uso. LaSourceAccount
condizione garantisce che solo gli eventi provenienti da quanto specificato Account AWS (444455556666 in questo caso) possano attivare l'argomento Amazon SNS. Questa è una misura di sicurezza per impedire ad account non autorizzati di inviare notifiche al tuo argomento. -
Altri servizi di supporto
SourceAccount
. LaSourceAccount
condizione è supportata dai seguenti servizi. È fondamentale utilizzare questa condizione quando desideri limitare l'accesso al tuo argomento Amazon SNS in base all'account di origine.-
Amazon API Gateway
-
Amazon CloudWatch
-
Amazon DevOps Guru
-
Amazon EventBridge
-
GameLift Server Amazon
-
Servizio di SMS e messaggi vocali Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon S3 Glacier
-
Amazon SES
-
Amazon Simple Storage Service
-
AWS CodeCommit
-
AWS 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 sul tuo argomento Amazon SNS. Ciò contribuirà a garantire che la policy sia configurata correttamente.
-
Le migliori pratiche di sicurezza. Esamina e verifica regolarmente le 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 operazioni sicure.
Consenti ad Amazon SES di pubblicare in un argomento di proprietà di un altro account
È possibile 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.
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "StringEquals": { "aws:SourceOwner": "111122223333" } } } ] }
Quando si pubblicano eventi su Amazon SNS, i seguenti servizi supportanoaws:SourceOwner
:
-
Amazon API Gateway
-
Amazon CloudWatch
-
Amazon DevOps Guru
-
GameLift Server Amazon
-
Servizio di SMS e messaggi vocali Amazon Pinpoint
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
AWS Directory Service
-
AWS Lambda
-
Strumento di gestione degli incidenti AWS Systems Manager
aws:SourceAccount
rispetto a 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:SourceAccount
e 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 come utilizza Amazon SES
aws:SourceOwner
e un elenco di AWS servizi che supportano tale condizione.
Consenti agli account di un'organizzazione AWS Organizations di 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 l'argomento MyTopic
dell'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 la pubblicazione di qualsiasi CloudWatch avviso su un argomento in un account diverso
Utilizza i seguenti passaggi per richiamare un argomento di Amazon SNS con CloudWatch un 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 e-mail.
-
Scegli Crea abbonamento, quindi controlla la tua e-mail per confermare l'iscrizione.
Crea un CloudWatch allarme nell'account A
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Nel riquadro di navigazione, scegli Allarmi, quindi scegli Crea avvisi.
-
Se non hai ancora 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 politica:
Nota
Sostituisci i valori di esempio nella politica seguente con i tuoi.
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "SNS:GetTopicAttributes", "SNS:SetTopicAttributes", "SNS:AddPermission", "SNS:RemovePermission", "SNS:DeleteTopic", "SNS:Subscribe", "SNS:ListSubscriptionsByTopic", "SNS:Publish" ], "Resource": "example-topic-arn-account-b", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:example-region:111122223333:alarm:" } } } ] }
Prova l'allarme
Per testare l'allarme, modifica la soglia di allarme in base ai punti dati metrici o modifica manualmente lo stato dell'allarme. Quando si modifica la soglia o lo stato dell'allarme, si riceve una notifica via e-mail.
Soluzione alternativa per l'utilizzo di un argomento Amazon SNS locale e l'inoltro di messaggi
Utilizza i seguenti passaggi per abilitare le notifiche CloudWatch Amazon SNS for Alarms su più account:
-
Crea un argomento Amazon SNS nello stesso account dell'CloudWatchallarme (111122223333).
-
Sottoscrivi una funzione Lambda o una EventBridgeregola Amazon a quell'argomento di Amazon SNS.
-
La funzione o la 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" } } }] }