Casi di esempio per il controllo degli SNS accessi di Amazon - Amazon Simple Notification Service

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.

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'AddPermissionazione 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'Publishazione 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'SetTopicAttributesAPIattributo 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'AddPermissionazione 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'SetTopicAttributesazione per applicare la politica al tuo argomento.

Ecco come puoi creare una politica che limiti gli abbonamenti a: HTTPS

  1. 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" } } }] }
  2. Applica la politica. Usa l'SetTopicAttributesazione in Amazon SNS API per applicare questa politica al tuo argomento. Imposta l'Policyattributo 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'SetQueueAttributesazione per applicare una politica personalizzata alla SQS coda di Amazon. A differenza di AmazonSNS, Amazon SQS non supporta l'AddPermissionazione 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'azioneGetQueueAttributes. 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:

  1. 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.

  2. Applica la policy. Utilizza l'SetTopicAttributesazione 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:

  • SourceAccountCondizione d'uso. La SourceAccount 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 supportoSourceAccount. La SourceAccount 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'Resourceistruzione 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.

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. Per ulteriori informazioni, consulta Visualizzazione dei dettagli di un'organizzazione dall'account master.

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