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 policy API basate sull'identità di Amazon Gateway
Per impostazione predefinita, IAM gli utenti e i ruoli non sono autorizzati a creare o modificare API risorse Gateway. Inoltre, non possono eseguire attività utilizzando AWS Management Console AWS CLI, o AWS SDKs. Un IAM amministratore deve creare IAM politiche che concedano a utenti e ruoli l'autorizzazione a eseguire API operazioni specifiche sulle risorse specifiche di cui ha bisogno. L'amministratore deve quindi allegare tali politiche agli IAM utenti o ai gruppi che richiedono tali autorizzazioni.
Per informazioni su come creare IAM politiche, vedere Creazione di politiche nella JSON scheda nella Guida per l'IAMutente. Per informazioni sulle azioni, le risorse e le condizioni specifiche di API Gateway, consulta Azioni, risorse e chiavi di condizione per Amazon API Gateway Management e Azioni, risorse e chiavi di condizione per Amazon API Gateway Management V2.
Argomenti
- Best practice per le policy
- Consentire agli utenti di visualizzare le loro autorizzazioni
- Autorizzazioni di lettura semplici
- Crea solo i nostri autorizzatori REQUEST JWT
- Richiedere che l'endpoint predefinito execute-api sia disabilitato
- Consenti agli utenti di creare o aggiornare solo dati privati REST APIs
- Richiedi che i percorsi abbiano l'autorizzazione API
- Impedisci a un utente di creare o aggiornare un VPC link
Best practice per le policy
Le politiche basate sull'identità determinano se qualcuno può creare, accedere o eliminare le risorse API Gateway nel tuo account. Queste azioni possono comportare costi aggiuntivi per l' Account AWS. Quando crei o modifichi policy basate su identità, segui queste linee guida e raccomandazioni:
-
Inizia con le policy AWS gestite e passa alle autorizzazioni con privilegi minimi: per iniziare a concedere autorizzazioni a utenti e carichi di lavoro, utilizza le politiche gestite che concedono le autorizzazioni per molti casi d'uso comuni.AWS Sono disponibili nel tuo. Account AWS Ti consigliamo di ridurre ulteriormente le autorizzazioni definendo politiche gestite dai AWS clienti specifiche per i tuoi casi d'uso. Per ulteriori informazioni, consulta le politiche AWS gestite o le politiche AWS gestite per le funzioni lavorative nella Guida per l'IAMutente.
-
Applica le autorizzazioni con privilegi minimi: quando imposti le autorizzazioni con le IAM politiche, concedi solo le autorizzazioni necessarie per eseguire un'attività. Puoi farlo definendo le azioni che possono essere intraprese su risorse specifiche in condizioni specifiche, note anche come autorizzazioni con privilegi minimi. Per ulteriori informazioni sull'utilizzo per applicare le autorizzazioni, consulta Politiche e autorizzazioni nella Guida IAM per l'utente. IAM IAM
-
Utilizza le condizioni nelle IAM politiche per limitare ulteriormente l'accesso: puoi aggiungere una condizione alle tue politiche per limitare l'accesso ad azioni e risorse. Ad esempio, puoi scrivere una condizione di policy per specificare che tutte le richieste devono essere inviate utilizzandoSSL. È inoltre possibile utilizzare condizioni per concedere l'accesso alle azioni di servizio se vengono utilizzate tramite uno specifico Servizio AWS, ad esempio AWS CloudFormation. Per ulteriori informazioni, consulta Elementi IAM JSON della politica: Condizione nella Guida IAM per l'utente.
-
Usa IAM Access Analyzer per convalidare IAM le tue policy e garantire autorizzazioni sicure e funzionali: IAM Access Analyzer convalida le policy nuove ed esistenti in modo che aderiscano al linguaggio delle IAM policy () e alle best practice. JSON IAM IAMAccess Analyzer fornisce più di 100 controlli delle politiche e consigli pratici per aiutarti a creare policy sicure e funzionali. Per ulteriori informazioni, consulta Convalida delle politiche con IAM Access Analyzer nella Guida per l'utente. IAM
-
Richiedi l'autenticazione a più fattori (MFA): se hai uno scenario che richiede l'utilizzo di IAM utenti o di un utente root Account AWS, attiva questa opzione MFA per una maggiore sicurezza. Per richiedere MFA quando vengono richiamate API le operazioni, aggiungi MFA delle condizioni alle tue politiche. Per ulteriori informazioni, consulta Secure API access with MFA nella Guida IAM per l'utente.
Per ulteriori informazioni sulle best practice inIAM, consulta la sezione Procedure consigliate in materia di sicurezza IAM nella Guida IAM per l'utente.
Consentire agli utenti di visualizzare le loro autorizzazioni
Questo esempio mostra come è possibile creare una politica che consenta IAM agli utenti di visualizzare le politiche in linea e gestite allegate alla loro identità utente. Questa politica include le autorizzazioni per completare questa azione sulla console o utilizzando o a livello di codice. AWS CLI AWS API
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
Autorizzazioni di lettura semplici
Questa politica di esempio fornisce all'utente il permesso di ottenere informazioni su tutte le risorse di un HTTP o WebSocket API con l'identificatore di a123456789
nella AWS regione us-east-1. La risorsa arn:aws:apigateway:
include tutte le risorse secondarie API come gli autorizzatori e le distribuzioni.us-east-1
::/apis/a123456789/*
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:GET" ], "Resource": [ "arn:aws:apigateway:
us-east-1
::/apis/a123456789/*" ] } ] }
Crea solo i nostri autorizzatori REQUEST JWT
Questa politica di esempio consente a un utente di creare solo APIs con REQUEST
o senza JWT
autorizzazioni, anche tramite importazione. Nella Resource
sezione della politica, arn:aws:apigateway:us-east-1::/apis/??????????
richiede che le risorse abbiano un massimo di 10 caratteri, il che esclude le sottorisorse di un. API Questo esempio utilizza ForAllValues
nella Condition
sezione perché gli utenti possono creare più autorizzatori contemporaneamente importando un. API
{ "Version": "2012-10-17", "Statement": [ { "Sid": "OnlyAllowSomeAuthorizerTypes", "Effect": "Allow", "Action": [ "apigateway:PUT", "apigateway:POST", "apigateway:PATCH" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/??????????", "arn:aws:apigateway:us-east-1::/apis/*/authorizers", "arn:aws:apigateway:us-east-1::/apis/*/authorizers/*" ], "Condition": { "ForAllValues:StringEqualsIfExists": { "apigateway:Request/AuthorizerType": [ "REQUEST", "JWT" ] } } } ] }
Richiedere che l'endpoint predefinito execute-api
sia disabilitato
Questo criterio di esempio consente agli utenti di creare, aggiornare o importare un fileAPI, con il seguente requisitoDisableExecuteApiEndpoint
. true
In DisableExecuteApiEndpoint
tal casotrue
, i client non possono utilizzare l'execute-api
endpoint predefinito per richiamare un. API
Utilizziamo la BoolIfExists
condizione per gestire una chiamata di aggiornamento in API cui non è stata compilata la chiave di DisableExecuteApiEndpoint
condizione. Quando un utente tenta di creare o importare unaAPI, la chiave DisableExecuteApiEndpoint
condizionale viene sempre compilata.
Poiché la apis/*
risorsa acquisisce anche risorse secondarie come autorizzatori o metodi, la estendiamo esplicitamente solo con una dichiarazione. APIs Deny
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DisableExecuteApiEndpoint", "Effect": "Allow", "Action": [ "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/*" ], "Condition": { "BoolIfExists": { "apigateway:Request/DisableExecuteApiEndpoint": true } } }, { "Sid": "ScopeDownToJustApis", "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:POST", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis/*/*" ] } ] }
Consenti agli utenti di creare o aggiornare solo dati privati REST APIs
Questo criterio di esempio utilizza le chiavi di condizione per richiedere che un utente crei solo PRIVATE
APIs e per impedire aggiornamenti che potrebbero modificare un formato API da PRIVATE
a un altro tipo, ad esempioREGIONAL
.
Di solito ForAllValues
richiediamo che ogni EndpointType
aggiunta a un API siaPRIVATE
. Utilizziamo una chiave di condizione della risorsa per consentire qualsiasi aggiornamento a un API purché lo siaPRIVATE
. ForAllValues
si applica solo se è presente una chiave di condizione.
Utilizziamo il non-greedy matcher (?
) per confrontare in modo esplicito e impedire l'utilizzo di API risorse diverse API IDs da quelle consentite, come gli autorizzatori.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ScopePutToPrivateApis", "Effect": "Allow", "Action": [ "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis", "arn:aws:apigateway:us-east-1::/restapis/??????????" ], "Condition": { "ForAllValues:StringEquals": { "apigateway:Resource/EndpointType": "PRIVATE" } } }, { "Sid": "ScopeToPrivateApis", "Effect": "Allow", "Action": [ "apigateway:DELETE", "apigateway:PATCH", "apigateway:POST" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis", "arn:aws:apigateway:us-east-1::/restapis/??????????" ], "Condition": { "ForAllValues:StringEquals": { "apigateway:Request/EndpointType": "PRIVATE", "apigateway:Resource/EndpointType": "PRIVATE" } } }, { "Sid": "AllowResourcePolicyUpdates", "Effect": "Allow", "Action": [ "apigateway:UpdateRestApiPolicy" ], "Resource": [ "arn:aws:apigateway:us-east-1::/restapis/*" ] } ] }
Richiedi che i percorsi abbiano l'autorizzazione API
Questa policy fa sì che i tentativi di creare o aggiornare un route (anche attraverso l'importazione) non riescono se il route non dispone di autorizzazione. ForAnyValue
restituisce false se la chiave non è presente, ad esempio quando un route non viene creato o aggiornato. Usiamo ForAnyValue
perché più route possono essere creati attraverso l'importazione.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUpdatesOnApisAndRoutes", "Effect": "Allow", "Action": [ "apigateway:POST", "apigateway:PATCH", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/??????????", "arn:aws:apigateway:us-east-1::/apis/*/routes", "arn:aws:apigateway:us-east-1::/apis/*/routes/*" ] }, { "Sid": "DenyUnauthorizedRoutes", "Effect": "Deny", "Action": [ "apigateway:POST", "apigateway:PATCH", "apigateway:PUT" ], "Resource": [ "arn:aws:apigateway:us-east-1::/apis", "arn:aws:apigateway:us-east-1::/apis/*" ], "Condition": { "ForAnyValue:StringEqualsIgnoreCase": { "apigateway:Request/RouteAuthorizationType": "NONE" } } } ] }
Impedisci a un utente di creare o aggiornare un VPC link
Questa politica impedisce a un utente di creare o aggiornare un VPC link. Un VPC link ti consente di esporre le risorse all'interno di Amazon VPC a clienti esterni a. VPC
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyVPCLink", "Effect": "Deny", "Action": [ "apigateway:POST", "apigateway:PUT", "apigateway:PATCH" ], "Resource": [ "arn:aws:apigateway:
us-east-1
::/vpclinks", "arn:aws:apigateway:us-east-1
::/vpclinks/*" ] } ] }