Come posso limitare l'accesso a una sessione di ruolo IAM specifica utilizzando una policy basata sull'identità IAM?

Ultimo aggiornamento: 31/01/2022

Desidero concedere le autorizzazioni a una specifica sessione di ruolo di AWS Identity and Access Management (IAM) con una policy basata sull'identità.

Soluzione

Crea una policy IAM per consentire l'accesso a una sessione di ruolo IAM specifica utilizzando la chiave di contesto delle condizioni globali di AWS aws:userid.

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi di AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

La chiave di condizione globale aws:userid verifica se l'ID univoco dell'entità che effettua la richiesta corrisponde all'ID univoco specificato nella policy IAM.

Ad esempio, nel caso in cui si desidera consentire a una sessione di ruolo IAM specifica di eseguire solo azioni specifiche di Amazon Elastic Compute Cloud (Amazon EC2) nell’account AWS. Crea una policy IAM simile alla seguente:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowASpecificRoleSession",
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:userid": "AROAXXXXXXXXXXXXXXXXX:<role-session-name>"
                }
            }
        }
    ]
}

Questa policy IAM garantisce all'istanza Amazon EC2 l'accesso alla sessione del ruolo IAM nella chiave di condizione globale aws:userid. Le altre sessioni di ruolo non possono eseguire alcuna operazione di Amazon EC2.

Per ottenere l'ID del ruolo IAM, emetti il seguente comando di AWS CLI:

$ aws iam get-role --role-name <rolename>

Verrà ottenuto un output simile al seguente:

{
    "Role": {
        "Description": "Test Role",
        "AssumeRolePolicyDocument":"<URL-encoded-JSON>",
        "MaxSessionDuration": 3600,
        "RoleId": "AROA1234567890EXAMPLE",
        "CreateDate": "2019-11-13T16:45:56Z",
        "RoleName": "Test-Role",
        "Path": "/",
        "RoleLastUsed": {
            "Region": "us-east-1",
            "LastUsedDate": "2019-11-13T17:14:00Z"
        },
        "Arn": "arn:aws:iam::123456789012:role/Test-Role"
    }
}

Nell'output, controlla la stringa RoleId. L'ID ruolo viene utilizzato nella policy basata sull'identità per definire l'ambito dell'accesso delle istanze Amazon EC2 alla sessione del ruolo IAM.

Nota: la chiave di condizione globale aws:userid può essere utilizzata in qualsiasi tipo di policy IAM, ad esempio una policy basata sull'identità, una policy basata sulle risorse, una policy sui limiti delle autorizzazioni e così via. I valori per la chiave di condizione globale aws:userid dipendono dal tipo di principale che avvia la richiesta. Per determinare i valori per diversi tipi di principale, vedere Informazioni disponibili in tutte le richieste.