Desidero risolvere gli errori di autorizzazione di AWS Identity and Access Management (IAM) che ricevo quando aggiungo abbonati al mio argomento Amazon Simple Notification Service (Amazon SNS).
Breve descrizione
Quando un'entità IAM prova ad aggiungere un abbonamento a un argomento Amazon SNS senza le autorizzazioni di azione dell'API Subscribe, SNS restituisce il seguente errore:
An error occurred (AuthorizationError) when calling the Subscribe operation: User: your_IAM_user_or_role is not authorized to perform: sns:Subscribe on resource: YOUR_SNS_TOPIC_ARN
Nota: l'entità IAM potrebbe essere un utente o ruolo IAM.
Per risolvere l'errore, concedi all'entità IAM l'autorizzazione a eseguire l'azione API Subscribe sull'argomento Amazon SNS.
Se ricevi un errore simile che termina con un “explicit deny”
Rimuovi tutte le dichiarazioni di policy che negano esplicitamente all'ente IAM l'accesso alla risorsa SNS.
Soluzione
Se l'entità IAM e l'argomento SNS si trovano in account AWS diversi
Effettua entrambe le seguenti operazioni:
Allega una dichiarazione di policy IAM all'entità IAM che consente all'entità di eseguire l'azione "SNS:subscribe"
Per istruzioni, consulta Aggiunta e rimozione di autorizzazioni per identità IAM. Allega il seguente esempio di dichiarazione sulla politica IAM:
**Importante:**Sostituisci "YOUR_SNS_TOPIC_ARN" con il nome della risorsa Amazon (ARN) del tuo argomento Amazon SNS.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SNSSubscribePermission",
"Effect": "Allow",
"Action": "sns:Subscribe",
"Resource": "YOUR_SNS_TOPIC_ARN"
}
]
}
Allega una dichiarazione sulla policy di accesso di Amazon SNS alla policy di accesso del tuo argomento che consenta all'entità IAM di eseguire l'azione "sns:Subscribe"
Per istruzioni, consulta Come posso modificare la politica di accesso del mio argomento Amazon SNS? Allega il seguente esempio di dichiarazione di policy di Amazon SNS:
Importante: Sostituisci "YOUR_IAM USER/ROLE_ARN" con l'ARN della tua entità IAM. Sostituisci "YOUR_SNS_TOPIC_ARN" con l'ARN del tuo argomento Amazon SNS.
{
"Sid": "AllowIAMEntity",
"Effect": "Allow",
"Principal": {
"AWS": "YOUR_IAM USER/ROLE_ARN "
},
"Action": "sns:Subscribe",
"Resource": "YOUR_SNS_TOPIC_ARN"
}
Se l'entità IAM e l'argomento SNS sono nello stesso account
Quindi, effettua una delle seguenti operazioni:
Allega una dichiarazione di policy IAM all'entità IAM che consente all'entità di eseguire l'azione "sns:Subscribe".
-oppure-
Allega una dichiarazione di policy Amazon SNS alla policy di accesso dell’argomento che consenta all'entità IAM di eseguire l'azione "sns:Subscribe".
Per vedere delle dichiarazioni di policy di esempio, consulta la sezione Se l'entità IAM e l'argomento SNS si trovano in account AWS diversi in questo articolo.
Verifica che né la policy dell'entità IAM né la policy di accesso dell'argomento SNS neghino esplicitamente l'accesso alla risorsa SNS
Rivedi la policy dell'entità IAM e la policy di accesso dell'argomento SNS. Quindi, rimuovi tutte le dichiarazioni di policy che negano esplicitamente all'entità IAM l'accesso alla risorsa SNS.
Per ulteriori informazioni, consulta The difference between explicit and implicit denies.
Informazioni correlate
Utilizzo di policy basate su identità con Amazon SNS