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à.
Casi di esempio per il controllo degli SNS accessi di Amazon
Questa sezione include alcuni esempi di casi d'uso tipici per il controllo accessi.
Argomenti
- Concedi Account AWS l'accesso a un argomento
- Limita gli abbonamenti a HTTPS
- Pubblica messaggi su una SQS coda Amazon
- Consentire la pubblicazione delle notifiche degli eventi Amazon S3 su un argomento
- Consenti SES ad Amazon di pubblicare su un argomento di proprietà di un altro account
- aws:SourceAccount rispetto a aws:SourceOwner
- Consenti agli account di un'organizzazione AWS Organizations di pubblicare su un argomento in un altro account
- Consenti la pubblicazione di qualsiasi CloudWatch avviso su un argomento in un account diverso
- Limita la pubblicazione a un SNS argomento Amazon solo da un VPC endpoint specifico
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'SNSAPIazione AddPermission
Amazon.
L'AddPermission
azione consente di specificare un argomento, un elenco di Account AWS IDs, 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 è necessario che tu scriva tu stesso la dichiarazione sulla politica: Amazon se ne SNS occupa 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
, SNS Amazon genererà e inserirà la seguente dichiarazione 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, il 1111-2222-3333 avrà l'autorizzazione a pubblicare messaggi sull'argomento. Account AWS
Informazioni aggiuntive:
-
Gestione dei criteri personalizzati: sebbene
AddPermission
sia utile per concedere le 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 specifici. IAM È possibile farlo utilizzando l'attributo per aggiornare direttamente l'SetTopicAttributes
APIattributo policy. -
Migliori pratiche di sicurezza: fai attenzione quando concedi le autorizzazioni per assicurarti che solo persone attendibili Account AWS o entità abbiano accesso ai tuoi argomenti Amazon. SNS Esamina e verifica regolarmente le politiche allegate ai tuoi argomenti per mantenere la sicurezza.
-
Limiti delle politiche: tieni presente che esistono limiti alla dimensione e alla complessità delle SNS politiche di Amazon. Se devi aggiungere molte autorizzazioni o condizioni complesse, assicurati che la tua politica rimanga entro questi limiti.
Limita gli abbonamenti a HTTPS
Per limitare il protocollo di invio delle notifiche per il tuo SNS argomento Amazon aHTTPS, devi creare una politica personalizzata. L'AddPermission
azione in Amazon SNS non ti consente di specificare restrizioni di protocollo quando concedi l'accesso al tuo 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 desideri concedere l'accesso e imporre la condizione che siano consentiti solo HTTPS gli abbonamenti. 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 lo è. 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. Usa l'
SetTopicAttributes
azione in Amazon SNS API per applicare questa politica al tuo argomento. Imposta l'Policy
attributo dell'argomento sulla JSON politica 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. Limita gli abbonamenti per HTTPS migliorare la sicurezza delle notifiche assicurando 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.
Pubblica messaggi su una SQS coda Amazon
Per pubblicare messaggi dal tuo SNS argomento Amazon su una SQS coda Amazon, devi configurare le autorizzazioni corrette sulla coda AmazonSQS. Sebbene SNS sia Amazon che Amazon SQS utilizzino il linguaggio delle policy AWS di controllo degli accessi, devi impostare esplicitamente una policy sulla SQS coda Amazon per consentire l'invio di messaggi dall'argomento AmazonSNS.
Puoi raggiungere questo obiettivo utilizzando l'SetQueueAttributes
azione per applicare una politica personalizzata alla SQS coda di Amazon. A differenza di AmazonSNS, Amazon SQS non supporta l'AddPermission
azione volta a creare dichiarazioni politiche con condizioni. Pertanto, è necessario scrivere la politica manualmente.
Di seguito è riportato un esempio di SQS politica di Amazon che concede ad Amazon SNS l'autorizzazione a inviare messaggi alla tua coda. Tieni presente che questa politica è associata alla SQS coda Amazon, non all'SNSargomento Amazon. Le azioni specificate sono SQS azioni Amazon e la risorsa è l'Amazon Resource Name (ARN) della coda. Puoi recuperare le code ARN 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 politica utilizza la aws:SourceArn
condizione per limitare l'accesso alla SQS coda in base alla fonte dei messaggi inviati. Ciò garantisce che solo i messaggi provenienti dall'SNSargomento specificato (in questo caso, arn:aws:sns:us-east- 2:444455556666:) possano essere recapitati alla coda. MyTopic
Informazioni aggiuntive:
-
Coda. ARN Assicurati di recuperare la SQS coda corretta ARN di Amazon 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'SNSargomento Amazon per interagire con la SQS coda Amazon e rivedi regolarmente le tue politiche per assicurarti che siano sicure up-to-date
-
Politiche predefinite in AmazonSNS. Contrariamente ad alcuni malintesi, Amazon SNS non concede automaticamente una politica predefinita che consenta ad altri Servizi AWS l'accesso agli argomenti appena creati. Devi definire e allegare in modo esplicito le policy per controllare l'accesso ai tuoi SNS argomenti Amazon.
-
Test e convalida. Dopo aver impostato la politica, verifica l'integrazione pubblicando i messaggi SNS sull'argomento Amazon e verificando che vengano recapitati correttamente alla SQS coda Amazon. Questo aiuta a confermare che la policy è 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 SNS argomento Amazon, 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 trattato su AmazonSNS.
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 SNS argomento Amazon. 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 AmazonSNS.
-
Proprietario del bucket Amazon S3:444455556666 è l' Account AWS ID proprietario del bucket Amazon S3 per l'invio delle notifiche.
-
-
Applica la policy. Utilizza l'
SetTopicAttributes
azione per impostare questa politica sul tuo SNS argomento Amazon. 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 SNS argomento Amazon in base all'account di origine.-
Amazon API Gateway
-
Amazon CloudWatch
-
Amazon DevOps Guru
-
Amazon EventBridge
-
Amazon GameLift
-
Amazon Pinpoint SMS e Voice API
-
Amazon RDS
-
Amazon Redshift
-
Amazon S3 Glacier
-
Amazon SES
-
Amazon Simple Storage Service
-
AWS CodeCommit
-
AWS Directory Service
-
AWS Lambda
-
AWS Systems Manager Incident 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 politiche SNS tematiche di Amazon 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 SES ad Amazon di pubblicare su 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 che tu abbia effettuato l'accesso all'account 111122223333SES, aperto Amazon e creato un'e-mail. Per pubblicare notifiche su questa e-mail su un SNS argomento Amazon di proprietà dell'account 444455556666, devi creare una politica come la seguente. A tale scopo, è necessario fornire informazioni sull'entità principale (l'altro servizio) e sulla proprietà di ciascuna risorsa. L'Resource
istruzione fornisce l'argomentoARN, che include l'ID account 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 AmazonSNS, sono supportati i seguenti serviziaws:SourceOwner
:
-
Amazon API Gateway
-
Amazon CloudWatch
-
Amazon DevOps Guru
-
Amazon GameLift
-
Amazon Pinpoint SMS e Voice API
-
Amazon RDS
-
Amazon Redshift
-
Amazon SES
-
AWS CodeCommit
-
AWS Directory Service
-
AWS Lambda
-
AWS Systems Manager Incident 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
aws:SourceAccount
Amazon mantiene SNS ancora la compatibilità con le versioni precedenti per i servizi esistenti attualmente supportatiaws:SourceOwner
.
Le chiavi aws:SourceAccount
e aws:SourceOwner
condition vengono impostate ciascuna da alcuni Servizi AWS quando vengono pubblicate su un SNS argomento di Amazon. 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 SES ad Amazon di pubblicare su un argomento di proprietà di un altro account come Amazon SES utilizza
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, a controllare l'accesso e la sicurezza e a 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 l'SNSargomento MyTopic
dell'account444455556666
. 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
In questo caso, tutti gli CloudWatch allarmi 111122223333
presenti nell'account possono essere pubblicati su un SNS argomento Amazon nell'account444455556666
.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" } } } ] }
Limita la pubblicazione a un SNS argomento Amazon solo da un VPC endpoint specifico
In questo caso, l'argomento nell'account 444455556666 può essere pubblicato solo dall'VPCendpoint 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" } } }] }