

 **Contribuisci a migliorare questa pagina** 

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à.

Per contribuire a questa guida per l'utente, scegli il GitHub link **Modifica questa pagina** nel riquadro destro di ogni pagina.

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à.

# Concedere agli utenti l’accesso a Kubernetes con un provider OIDC esterno
<a name="authenticate-oidc-identity-provider"></a>

Amazon EKS supporta l’utilizzo di provider di identità OpenID Connect (OIDC) come metodo per autenticare gli utenti nel cluster. I provider di identità OIDC possono essere utilizzati con o in alternativa a AWS Identity and Access Management (IAM). Per ulteriori informazioni sull’utilizzo di IAM, consultare [Concedi agli utenti e ai ruoli IAM l'accesso a Kubernetes APIs](grant-k8s-access.md). Dopo aver configurato l’autenticazione per il cluster, è possibile creare `roles` e `clusterroles` Kubernetes per assegnare autorizzazioni ai ruoli e quindi associare i ruoli alle identità utilizzando `rolebindings` e `clusterrolebindings` Kubernetes. Per ulteriori informazioni, consulta [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) nella documentazione di Kubernetes.
+ È possibile associare un provider di identità OIDC al cluster.
+ Kubernetes non fornisce un provider di identità OIDC. È possibile utilizzare un provider di identità OIDC pubblico esistente oppure eseguire il proprio provider di identità. Per un elenco dei provider certificati, consultare [OpenID Certification](https://openid.net/certification/) sul sito OpenID.
+ L’URL dell’emittente del provider di identità OIDC deve essere accessibile pubblicamente, in modo che Amazon EKS possa individuare le chiavi di firma. Amazon EKS non supporta i provider di identità OIDC con certificati autofirmati.
+ Puoi disabilitare l’autenticazione IAM nel cluster, perché sarà ancora necessaria per aggiungere i nodi a un cluster.
+ Diversamente da un utente di provider di identità, un cluster Amazon EKS deve ancora essere creato da un [principale IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) AWS . Questo perché il creatore del cluster interagisce con Amazon EKS APIs, anziché con APIs Kubernetes.
+ Gli utenti autenticati dal provider di identità OIDC vengono elencati nel registro di controllo del cluster se i log sono attivati per il piano di controllo. CloudWatch Per ulteriori informazioni, consulta [Abilitare o disabilitare i log del piano di controllo (control-plane)](control-plane-logs.md#enabling-control-plane-log-export).
+ Non è possibile accedere a Console di gestione AWS con un account di un provider OIDC. È possibile solo [Visualizza le risorse Kubernetes nel Console di gestione AWS](view-kubernetes-resources.md) accedendo Console di gestione AWS con un account AWS Identity and Access Management.

## Associazione di un provider di identità OIDC
<a name="associate-oidc-identity-provider"></a>

Prima di associare un provider di identità OIDC al cluster, è necessario ottenere dal provider le seguenti informazioni:

 **URL dell’emittente**   
L’URL del provider di identità OIDC che consente al server API di individuare le chiavi di firma pubbliche per la verifica dei token. L’URL deve iniziare con `https://` e deve corrispondere alla richiesta `iss` nei token ID OIDC del provider. In conformità con lo standard OIDC, i componenti del percorso sono consentiti, ma i parametri di query non lo sono. In genere l’URL è costituito solo da un nome host, come `https://server.example.org` o `https://example.com`. Questo URL dovrebbe puntare al livello sottostante `.well-known/openid-configuration` e dovrà essere accessibile pubblicamente tramite Internet.

 **ID client (noto anche come *pubblico*)**   
L’ID per l’applicazione client che effettua richieste di autenticazione al provider di identità OIDC.

È possibile associare un provider di identità utilizzando `eksctl` o il Console di gestione AWS.

### Associazione di un provider di identità usando eksctl
<a name="identity-associate-eksctl"></a>

1. Crea un file denominato `associate-identity-provider.yaml` con i seguenti contenuti. Sostituire i valori di esempio con i propri valori. I valori nella sezione `identityProviders` vengono ottenuti dal provider di identità OIDC. I valori sono obbligatori solo per il `name`, `type`, `issuerUrl`, e `clientId` impostazioni in `identityProviders`.

   ```
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: your-region-code
   
   identityProviders:
     - name: my-provider
       type: oidc
       issuerUrl: https://example.com
       clientId: kubernetes
       usernameClaim: email
       usernamePrefix: my-username-prefix
       groupsClaim: my-claim
       groupsPrefix: my-groups-prefix
       requiredClaims:
         string: string
       tags:
         env: dev
   ```
**Importante**  
Non specificare `system:`, o qualsiasi parte di quella stringa, per `groupsPrefix` o `usernamePrefix`.

1. Creare il provider.

   ```
   eksctl associate identityprovider -f associate-identity-provider.yaml
   ```

1. Per utilizzare `kubectl` per lavorare con il cluster e il provider di identità OIDC, consulta [Using kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) nella documentazione di Kubernetes.

### Associare un provider di identità utilizzando la AWS console
<a name="identity-associate-console"></a>

1. Aprire la [Console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Seleziona il cluster, poi seleziona la scheda **Accesso**.

1. Nella sezione **Provider di identità OIDC**, selezionare\$1 Associa provider di identità\$1.

1. Nella pagina **Associate provider di identità OIDC**, inserire o selezionare le seguenti opzioni e quindi selezionare **Associa**.
   + In **Nome**, inserire un nome univoco per il provider.
   + Per **URL dell’emittente**, inserire l’URL per il provider. Questo URL deve essere accessibile in Internet.
   + Per **ID client**, inserire l’ID client del provider di identità OIDC (noto anche come **audience**).
   + Per **Richiesta Nome Utente**, inserire la richiesta da utilizzare come nome utente.
   + Per **Richiesta di Gruppi**, inserire la richiesta da utilizzare come gruppo dell’utente.
   + (Opzionale) Selezionare **Opzioni avanzate**, inserire o selezionare le seguenti informazioni.
     +  **Prefisso Nome utente**: inserire un prefisso da anteporre alle richieste del nome utente. Il prefisso viene anteposto alle richieste di nome utente per evitare conflitti con i nomi esistenti. Se non si fornisce un valore e il nome utente è un valore diverso da `email`, il prefisso viene impostato per impostazione predefinita sul valore per **URL dell’emittente**. È possibile utilizzare il valore ` -` per disabilitare tutti i prefissi. Non specificare `system:` o qualsiasi parte di quella stringa.
     +  **Prefisso Gruppi**: inserire un prefisso da anteporre alle richieste di gruppo. Il prefisso viene anteposto alle richieste di gruppo per evitare conflitti con i nomi esistenti (ad esempio` system: groups`). Ad esempio, il valore `oidc:` crea nomi di gruppo come `oidc:engineering` e `oidc:infra`. Non specificare `system:` o qualsiasi parte di quella stringa.
     +  **Richieste necessarie**: selezionare **Aggiungi richiesta** e inserire una o più coppie di valori chiave che descrivono le richieste necessarie nel token ID client. Le coppie descrivono le richieste necessarie nel Token ID. Se impostato, ogni richiesta viene verificata per essere presente nel token ID con un valore corrispondente.

       1. Per utilizzare `kubectl` per lavorare con il cluster e il provider di identità OIDC, consulta [Using kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) nella documentazione di Kubernetes.

## Policy IAM di esempio
<a name="oidc-identity-provider-iam-policy"></a>

Se si desidera impedire che un provider di identità OIDC venga associato a un cluster, creare e associare le seguenti policy IAM agli account IAM degli amministratori Amazon EKS. Per ulteriori informazioni, consulta [Creating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) e [Adding IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) nella *Guida per l’utente IAM* e nelle [Actions](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerserviceforkubernetes.html) in Service Authorization Reference.

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "denyOIDC",
            "Effect": "Deny",
            "Action": [
                "eks:AssociateIdentityProviderConfig"
            ],
            "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/*"

        },
        {
            "Sid": "eksAdmin",
            "Effect": "Allow",
            "Action": [
                "eks:*"
            ],
            "Resource": "*"
        }
    ]
}
```

La seguente policy di esempio consente l’associazione del provider di identità OIDC se il `clientID` è `kubernetes` e la `issuerUrl` è `https://cognito-idp.us-west-2.amazonaws.com/*`.

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCognitoOnly",
            "Effect": "Deny",
            "Action": "eks:AssociateIdentityProviderConfig",
            "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance",
            "Condition": {
                "StringNotLikeIfExists": {
                    "eks:issuerUrl": "https://cognito-idp.us-west-2.amazonaws.com/*"
                }
            }
        },
        {
            "Sid": "DenyOtherClients",
            "Effect": "Deny",
            "Action": "eks:AssociateIdentityProviderConfig",
            "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance",
            "Condition": {
                "StringNotEquals": {
                    "eks:clientId": "kubernetes"
                }
            }
        },
        {
            "Sid": "AllowOthers",
            "Effect": "Allow",
            "Action": "eks:*",
            "Resource": "*"
        }
    ]
}
```