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.
Argomenti
- Concedi Account AWS l'accesso a un argomento
- Limitazione delle sottoscrizioni a HTTPS
- Pubblicare messaggi in una coda Amazon SQS.
- Consentire la pubblicazione delle notifiche degli eventi Amazon S3 su un argomento
- Consenti ad Amazon SES di pubblicare in 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
- Limitare la pubblicazione a un argomento Amazon SNS solo da un endpoint VPC specifico
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'Publish
azione 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.
-
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 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
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" } } }] }