Esempi di casi per il controllo degli accessi Amazon SNS - 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à.

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 nel sistema Amazon SNS. Nel caso più semplice, si desidera consentire a uno o più Account AWS utenti di accedere a un'azione specifica sull'argomento (ad esempio, Pubblica).

Puoi farlo usando l'operazione API di Amazon SNS AddPermission Richiede un argomento, un elenco di Account AWS ID, un elenco di azioni e un'etichetta e crea automaticamente una nuova dichiarazione nella politica di controllo degli accessi dell'argomento. In questo caso, non sei tu a scrivere una policy perché è Amazon SNS che genera automaticamente la nuova dichiarazione di policy per te. Puoi rimuovere la dichiarazione di policy in seguito chiamando RemovePermission con la propria etichetta.

Ad esempio, se AddPermission chiami l'argomento arn:aws:sns:us-east- 2:444455556666:MyTopic, con Account AWS ID 1111-2222-3333, l'Publishazione e l'etichetta, Amazon SNS genererà e inserirà la seguente dichiarazione sulla politica di controllo degli grant-1234-publish accessi:

{ "Statement": [{ "Sid": "grant-1234-publish", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": ["sns:Publish"], "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic" }] }

Una volta aggiunta questa dichiarazione, l'utente con 1111-2222-3333 può pubblicare messaggi sull'argomento. Account AWS

Limitazione delle sottoscrizioni a HTTPS

Nel seguente esempio, il protocollo di distribuzione delle notifiche viene limitato a HTTPS.

Hai bisogno di sapere come scrivere la tua policy per l'argomento perché l'operazione di Amazon SNS AddPermission non consente di specificare una restrizione del protocollo quando si concede a qualcuno l'accesso al proprio argomento. In questo caso, scrivi la tua policy e poi usi l'operazione SetTopicAttributes per impostare l'attributo Policy dell'argomento sulla tua nuova policy.

Il seguente esempio di policy completa concede all' Account AWS ID 1111-2222-3333 la possibilità di sottoscrivere le notifiche relative a un argomento.

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

Pubblicare messaggi in una coda Amazon SQS.

In questo caso d'uso, è possibile pubblicare i messaggi dal tuo argomento nella tua coda Amazon SQS. Come Amazon SNS, Amazon SQS; utilizza il linguaggio della policy di controllo accessi di Amazon. Per consentire a Amazon SNS; di inviare messaggi, dovrai usare l'operazione Amazon SQS; SetQueueAttributes per impostare una policy sulla coda.

Ancora una volta, avrai bisogno di sapere come scrivere la tua policy perché l'operazione AddPermission di Amazon SQS non crea dichiarazioni di policy con condizioni.

Nota

L’esempio presentato di seguito è una policy Amazon SQS che controlla l'accesso alla tua coda e non una policy Amazon SNS che controlla l'accesso al tuo argomento. Queste sono quindi operazioni Amazon SQS e la risorsa è l'Amazon Resource Name (ARN) della coda. Puoi determinare l'ARN della coda recuperando l'attributo QueueArn della coda con l'operazione 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 usa la condizione aws:SourceArn per limitare l'accesso alla coda in base all'origine del messaggio inviato alla coda. Puoi usare questo tipo di policy per consentire a Amazon SNS di inviare messaggi alla tua coda solo se i messaggi provengono da uno dei tuoi argomenti. In questo caso, specifichi uno dei tuoi argomenti in particolare, il cui ARN è arn:aws:sns:us-east- 2:444455556666:. MyTopic

La precedente policy è un esempio di policy Amazon SQS che è possibile scrivere e aggiungere a una coda specifica. Concederebbe l'accesso ad Amazon SNS e ad altri AWS servizi. Amazon SNS; fornisce una policy predefinita a tutti gli argomenti appena creati. La politica predefinita consente l'accesso al tuo argomento a tutti gli altri AWS servizi. Questa politica predefinita utilizza una aws:SourceArn condizione per garantire che AWS i servizi accedano all'argomento solo per conto delle AWS risorse di tua proprietà.

Consentire la pubblicazione delle notifiche degli eventi Amazon S3 su un argomento

In questo caso, desideri configurare la policy di un argomento in modo che il bucket Amazon S3 Account AWS di un altro possa pubblicare sul tuo argomento. Per ulteriori informazioni sulla pubblicazione di notifiche da Amazon S3, vai a Impostazione delle notifiche degli eventi bucket.

In questo esempio si presume che tu scriva la tua policy e poi usi l'operazione SetTopicAttributes per impostare l'attributo Policy dell'argomento sulla tua nuova policy.

Nell'istruzione di esempio seguente viene utilizzata la condizione SourceAccount per garantire che solo il proprietario dell'account Amazon S3 possa accedere all'argomento. In questo esempio, il proprietario dell'argomento è 111122223333 e il proprietario Amazon S3 è 444455556666. L'esempio indica che qualsiasi bucket Amazon S3 di proprietà di 444455556666 può pubblicare su. MyTopic

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

Quando si pubblicano eventi su Amazon SNS, i seguenti servizi supportanoaws:SourceAccount:

  • Amazon API Gateway

  • Amazon CloudWatch

  • Amazon DevOps Guru

  • Amazon ElastiCache

  • Amazon EventBridge

  • Amazon GameLift

  • 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

  • AWS Systems Manager Incident Manager

Consenti ad Amazon SES di pubblicare in un argomento di proprietà di un altro account

Puoi consentire a un altro AWS servizio 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

  • Amazon ElastiCache

  • Amazon GameLift

  • Servizio di SMS e messaggi vocali Amazon Pinpoint

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

Consenti agli account di un'organizzazione AWS Organizations di pubblicare su un argomento in un altro account

Il AWS Organizations servizio consente di gestire centralmente la fatturazione, controllare l'accesso e la sicurezza e condividere le risorse tra le Account AWS aziende.

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

In questo caso, tutti gli CloudWatch allarmi 111122223333 presenti nell'account possono essere pubblicati su un argomento di Amazon SNS dell'account. 444455556666

{ "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:*" } } } ] }

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