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à.
La seguente procedura mostra un modo per impostare le autorizzazioni per le funzioni tramite ABAC. In questo scenario di esempio, creerai quattro policy di autorizzazione IAM. Quindi, collegherai queste policy a un nuovo ruolo IAM. Infine, creerai un utente IAM e gli assegnerai l'autorizzazione per assumere il nuovo ruolo.
Argomenti
Prerequisiti
Assicurati di avere un ruolo di esecuzione Lambda. Userai questo ruolo quando concedi le autorizzazioni IAM e crei una funzione Lambda.
Fase 1: richiesta di tag sulle nuove funzioni
Quando utilizzi ABAC con Lambda, è consigliabile richiedere che tutte le funzioni abbiano i tag. Questo aiuta a garantire che le policy di autorizzazione ABAC funzionino come previsto.
Crea una policy IAM simile a quella del seguente esempio. Questa policy utilizza le chiavi aws: RequestTag /tag-key, aws: ResourceTag /tag-key e aws: TagKeys condition per richiedere che le nuove funzioni e il principale IAM che le crea abbiano entrambi il tag. project
Il modificatore ForAllValues
assicura che project
sia l'unico tag consentito. Se non includi il modificatore ForAllValues
, gli utenti potranno aggiungere altri tag alla funzione purché passino anche loro project
.
Esempio : richiesta di tag sulle nuove funzioni
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:TagResource" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:RequestTag/
project
": "${aws:PrincipalTag/project
}", "aws:ResourceTag/project
": "${aws:PrincipalTag/project
}" }, "ForAllValues:StringEquals": { "aws:TagKeys": "project
" } } } }
Fase 2: Consentire azioni basate su tag collegati a una funzione Lambda e al principale IAM
Crea una seconda policy IAM utilizzando la chiave di condizione aws: ResourceTag /tag-key per richiedere che il tag del principale corrisponda al tag associato alla funzione. La seguente policy di esempio consente ai principali con tag project
di richiamare le funzioni con il tag project
. Se una funzione ha altri tag, l'azione è negata.
Esempio : Richiesta di tag corrispondenti sulla funzione e sul principale IAM
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:ResourceTag/
project
": "${aws:PrincipalTag/project
}" } } } ] }
Fase 3: Concessione delle autorizzazioni di elenco
Crea una policy che consenta al principale di elencare le funzioni Lambda e i ruoli IAM. Ciò consente al principale di vedere tutte le funzioni Lambda e i ruoli IAM sulla console e quando si chiamano le operazioni API.
Esempio : Concessione delle autorizzazioni di elenco per Lambda e IAM
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllResourcesLambdaNoTags",
"Effect": "Allow",
"Action": [
"lambda:GetAccountSettings",
"lambda:ListFunctions",
"iam:ListRoles"
],
"Resource": "*"
}
]
}
Fase 4: Concessione delle autorizzazioni IAM
Crea una policy che consenta iam:. PassRole Questa autorizzazione è necessaria quando si assegna un ruolo di esecuzione a una funzione. Nella seguente policy di esempio, sostituisci l'ARN di esempio con l'ARN del tuo ruolo di esecuzione Lambda.
Nota
Non utilizzare la chiave di condizione ResourceTag
in una policy con l'operazione iam:PassRole
. Non puoi utilizzare il tag su un ruolo IAM per controllare l'accesso a chi può passare tale ruolo. Per ulteriori informazioni sulle autorizzazioni necessarie per passare un ruolo a un servizio, vedere Concessione a un utente delle autorizzazioni per passare un ruolo a un servizio. AWS
Esempio : Concessione dell'autorizzazione per inviare il ruolo di esecuzione
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "
arn:aws:iam::111122223333:role/lambda-ex
" } ] }
Fase 5: Creazione del ruolo IAM
Una best practice consiste nell'utilizzare i ruoli per delegare le autorizzazioni. Crea un ruolo IAM chiamato abac-project-role
:
-
In Fase 1: Selezione dell'entità attendibile, scegli Account AWS , quindi Questo account.
-
In Fase 2: Aggiunta delle autorizzazioni, collega le quattro policy IAM create nei passaggi precedenti.
-
In Fase 3: Assegnazione di un nome, revisione e creazione, scegli Add tag (Aggiungi tag). In Chiave, inserire
project
. Non immettere un valore.
Fase 6: Creazione dell'utente IAM
Crea un utente IAM chiamato abac-test-user
. Nella sezione Set permissions (Imposta autorizzazioni), seleziona Attach existing policies directly (Collega direttamente le policy esistenti), quindi Create policy (Crea policy). Immetti la seguente definizione di policy. Sostituisci 111122223333
con il tuo ID account AWS. Questa policy consente a abac-test-user
di assumere il ruolo abac-project-role
.
Esempio : Consentire all'utente IAM di assumere il ruolo ABAC
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
111122223333
:role/abac-project-role
" } }
Fase 7: Test delle autorizzazioni
-
Accedi alla console come. AWS
abac-test-user
Per ulteriori informazioni, consulta Accesso come utente IAM. -
Passare al ruolo
abac-project-role
. Per ulteriori informazioni, consulta Cambio di un ruolo (console). -
-
In Permissions (Autorizzazioni), scegli Change default execution role (Modifica ruolo di esecuzione predefinito), quindi per Execution role (Ruolo di esecuzione), scegli Use an existing role (Utilizza un ruolo esistente). Scegli lo stesso ruolo di esecuzione che hai usato in Fase 4: Concessione delle autorizzazioni IAM.
-
In Advanced settings (Impostazioni avanzate), seleziona Enable tags (Abilita tag) quindi scegli Add new tag (Aggiungi nuovo tag). In Chiave, inserire
project
. Non immettere un valore.
-
-
Crea una seconda funzione Lambda e aggiungi un tag diverso, ad esempio
environment
. Questa operazione dovrebbe non riuscire perché la policy ABAC creata in Fase 1: richiesta di tag sulle nuove funzioni consente al principale di creare solo funzioni con tagproject
. -
Crea una terza funzione senza tag. Questa operazione dovrebbe non riuscire perché la policy ABAC creata in Fase 1: richiesta di tag sulle nuove funzioni non consente al principale di creare funzioni senza tag.
Questa strategia di autorizzazione consente di controllare l'accesso senza creare nuove policy per ogni nuovo utente. Per concedere l'accesso a nuovi utenti, è sufficiente concedere loro l'autorizzazione per assumere il ruolo che corrisponde al progetto assegnato.
Fase 8: eliminare le risorse
Per eliminare il ruolo IAM
Per eliminare l'utente IAM
Per eliminare la funzione Lambda
-
Aprire la pagina Functions (Funzioni)
della console Lambda. -
Selezionare la funzione creata.
-
Scegliere Operazioni, Elimina.
-
Digita
confirm
nel campo di immissione testo e scegli Delete (Elimina).