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à.
Considerazioni sulla sicurezza per EKS Capabilities
Questo argomento tratta importanti considerazioni sulla sicurezza per EKS Capabilities, tra cui la configurazione dei ruoli IAM, le autorizzazioni Kubernetes e i modelli architettonici per le implementazioni multi-cluster e la gestione delle risorse tra account. AWS
EKS Capabilities utilizza una combinazione di ruoli IAM, voci di accesso EKS e Kubernetes RBAC per fornire un accesso sicuro ai AWS servizi, alle risorse Kubernetes in cluster e alle integrazioni con Secrets Manager e altri servizi. AWS CodeConnections AWS AWS
Capacità, ruolo IAM.
Quando crei una capacità, fornisci un ruolo di funzionalità IAM che EKS utilizza per eseguire azioni per tuo conto. Questo ruolo deve:
-
Avere lo stesso AWS account del cluster e della risorsa di capacità
-
Adottate una politica di fiducia che consenta al responsabile del
capabilities---eks.amazonaws.com.rproxy.govskope.caservizio di assumere il ruolo -
Disponi delle autorizzazioni IAM appropriate al tipo di funzionalità e al caso d'uso, a seconda delle tue esigenze. Per informazioni dettagliate sulle autorizzazioni IAM richieste, consultaConnect ai repository Git con AWS CodeConnections, e Gestisci i segreti delle applicazioni con AWS Secrets Manager Configurare le autorizzazioni ACK
È consigliabile considerare l'ambito dei privilegi richiesti per il caso d'uso specifico e concedere solo le autorizzazioni necessarie per soddisfare i requisiti. Ad esempio, quando si utilizza EKS Capability for Kube Resource Orchestrator, potrebbe non essere richiesta alcuna autorizzazione IAM, mentre quando si utilizza EKS Capability for AWS Controllers for Kubernetes è possibile concedere l'accesso completo a uno o più servizi. AWS
Importante
Sebbene alcuni casi d'uso possano giustificare l'uso di ampi privilegi amministrativi, segui il principio del privilegio minimo concedendo solo le autorizzazioni IAM minime richieste per il tuo caso d'uso specifico, limitando l'accesso a risorse specifiche utilizzando chiavi ARNs e condizioni anziché utilizzare autorizzazioni wildcard.
Per informazioni dettagliate sulla creazione e configurazione dei ruoli IAM con funzionalità, consulta. Funzionalità Amazon EKS, ruolo IAM
Voci di accesso EKS
Quando crei una funzionalità con un ruolo IAM, Amazon EKS crea automaticamente una voce di accesso per quel ruolo nel tuo cluster. Questa voce di accesso concede alla funzionalità di base le autorizzazioni Kubernetes per funzionare.
Nota
Le voci di accesso vengono create per il cluster in cui viene creata la funzionalità. Per le distribuzioni di Argo CD su cluster remoti, è necessario creare voci di accesso su tali cluster con le autorizzazioni appropriate per consentire alla funzionalità di Argo CD di distribuire e gestire le applicazioni.
La voce di accesso include:
-
Il ruolo di IAM (ARN) come principale
-
Politiche di accesso specifiche per funzionalità che concedono le autorizzazioni Kubernetes di base
-
Ambito appropriato (a livello di cluster o ambito dello spazio dei nomi) in base al tipo di funzionalità
Nota
Per Argo CD, le autorizzazioni relative allo spazio dei nomi vengono concesse allo spazio dei nomi specificato nella configurazione delle funzionalità (il valore predefinito è). argocd
Politiche di accesso predefinite per funzionalità
Ogni tipo di funzionalità concede al ruolo di capacità le autorizzazioni richieste, impostando diverse politiche di accesso predefinite come segue:
- kro
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSKROPolicy(con ambito cluster)Concede le autorizzazioni per guardare, gestire ResourceGraphDefinitions e creare istanze di risorse personalizzate definite da. RGDs
-
- ACK
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSACKPolicy(con ambito cluster)Concede le autorizzazioni per creare, leggere, aggiornare ed eliminare risorse personalizzate ACK in tutti i namespace.
-
- CD Argo
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDClusterPolicy(con ambito cluster)Concede autorizzazioni a livello di cluster per Argo CD per individuare risorse e gestire oggetti con ambito cluster.
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDPolicy(con ambito namespace)Concede autorizzazioni a livello di namespace per Argo CD per distribuire e gestire applicazioni. Ha come ambito lo spazio dei nomi specificato nella configurazione delle funzionalità (il valore predefinito è).
argocd
-
Per informazioni più dettagliate, vedereRivedere le autorizzazioni della policy di accesso.
Autorizzazioni Kubernetes aggiuntive
Alcune funzionalità potrebbero richiedere autorizzazioni Kubernetes aggiuntive oltre alle politiche di accesso predefinite. Puoi concedere queste autorizzazioni utilizzando uno dei seguenti metodi:
-
Criteri di accesso: Associa criteri gestiti aggiuntivi alla voce di accesso
-
Kubernetes RBAC: creazione
RolediClusterRoleassociazioni per l'utente Kubernetes della funzionalità
Autorizzazioni di lettura segrete ACK
Alcuni controller ACK devono leggere i segreti di Kubernetes per recuperare dati sensibili come le password dei database. I seguenti controller ACK richiedono un accesso segreto in lettura:
-
acm,acmpca,documentdb,memorydb,mq,rds,secretsmanager
Per concedere autorizzazioni di lettura segrete:
-
Associa la politica di
arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicyaccesso alla voce di accesso della funzionalità -
Estendi la policy a namespace specifici in cui le risorse ACK faranno riferimento ai segreti o concederanno l'accesso a livello di cluster
Importante
Le autorizzazioni di lettura segrete sono limitate ai namespace specificati durante l'associazione della politica di accesso. Ciò consente di limitare i segreti a cui la funzionalità può accedere.
o autorizzazioni arbitrarie per le risorse
kro richiede le autorizzazioni per creare e gestire le risorse definite nel tuo. ResourceGraphDefinitions Per impostazione predefinita, kro può solo guardare e gestire se stesso. RGDs
Per concedere a kro i permessi per creare risorse:
Opzione 1: Accedere alle politiche di accesso
Associa politiche di accesso predefinite come AmazonEKSAdminPolicy o AmazonEKSEditPolicy all'immissione di accesso della funzionalità.
Opzione 2: Kubernetes RBAC
Crea un account ClusterRoleBinding che conceda all'utente Kubernetes della funzionalità le autorizzazioni necessarie:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kro-cluster-admin subjects: - kind: User name: arn:aws:sts::111122223333:assumed-role/my-kro-role/kro apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Nota
Il nome utente Kubernetes per kro segue lo schema: arn:aws:sts::ACCOUNT_ID:assumed-role/ROLE_NAME/kro
Il nome della sessione /kro viene impostato automaticamente dalla funzionalità EKS kro.
Autorizzazioni IAM richieste in base alla funzionalità
- kro (Kube Resource Orchestrator)
-
Non sono richieste autorizzazioni IAM. Puoi creare un ruolo di capacità senza policy allegate. kro richiede solo le autorizzazioni RBAC di Kubernetes.
- ACK AWS (Controller per Kubernetes)
-
Richiede le autorizzazioni per gestire le AWS risorse che ACK creerà e gestirà. È necessario definire l'ambito delle autorizzazioni per servizi, azioni e risorse specifici in base alle proprie esigenze. Per informazioni dettagliate sulla configurazione delle autorizzazioni ACK, incluse le migliori pratiche di produzione con IAM Role Selectors, consulta. Configurare le autorizzazioni ACK
- CD Argo
-
Per impostazione predefinita, non sono richieste autorizzazioni IAM. Potrebbero essere necessarie autorizzazioni opzionali per:
-
AWS Secrets Manager: se si archiviano le credenziali del repository Git in Secrets Manager
-
AWS CodeConnections: Se si utilizza CodeConnections per l'autenticazione del repository Git
-
Amazon ECR: se si utilizzano grafici Helm archiviati in formato OCI in Amazon ECR
-
Best practice di sicurezza
Privilegio minimo IAM
Concedi alle tue risorse funzionali solo le autorizzazioni necessarie per il tuo caso d'uso. Ciò non significa che non sia possibile concedere ampie autorizzazioni amministrative alle proprie funzionalità, se necessario. In questi casi, è necessario gestire l'accesso a tali risorse in modo appropriato.
Ruoli relativi alle capacità:
-
ACK: Quando possibile, limita le autorizzazioni IAM a AWS servizi e risorse specifici di cui i tuoi team hanno bisogno, in base ai casi d'uso e ai requisiti
-
Argo CD: limita l'accesso a specifici repository Git e namespace Kubernetes
-
kro: Richiede un ruolo di capacità per la policy di fiducia, ma non sono necessarie autorizzazioni IAM (utilizza solo il cluster RBAC)
Esempio: invece"Resource": "*", specifica modelli per risorse o gruppi di risorse specifici.
"Resource": [ "arn:aws:s3:::my-app-*", "arn:aws:rds:us-west-2:111122223333:db:prod-*" ]
Utilizza le chiavi delle condizioni IAM per limitare ulteriormente l'accesso:
"Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } }
Per ulteriori informazioni sulla configurazione IAM, consulta la sezione Considerazioni per ciascuna funzionalità.
Isolamento dello spazio dei nomi per i segreti di Argo CD
La funzionalità gestita di Argo CD ha accesso a tutti i segreti di Kubernetes all'interno dello spazio dei nomi configurato (impostazione predefinita:). argocd Per mantenere una posizione di sicurezza ottimale, segui queste pratiche di isolamento dello spazio dei nomi:
-
Conserva solo i segreti relativi ad Argo CD all'interno dello spazio dei nomi Argo CD
-
Evita di archiviare segreti applicativi non correlati nello stesso spazio dei nomi di Argo CD
-
Utilizzate namespace separati per i segreti delle applicazioni che non sono necessari per le operazioni di Argo CD
Questo isolamento garantisce che l'accesso segreto di Argo CD sia limitato alle sole credenziali necessarie per l'autenticazione del repository Git e altre operazioni specifiche di Argo CD.
RBAC Kubernetes
Controlla quali utenti e account di servizio possono creare e gestire le risorse funzionali. È consigliabile distribuire le risorse di funzionalità in namespace dedicati con politiche RBAC appropriate.
Esempio: ruolo RBAC per l'utilizzo con ACK, che consente la gestione delle risorse S3 Bucket nel namespace: app-team
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ack-s3-manager namespace: app-team rules: - apiGroups: ["s3.services.k8s.aws"] resources: ["buckets"] verbs: ["get", "list", "create", "update", "delete"]
Registrazione di controllo
CloudTrail: Tutte le operazioni dell'API EKS Capability (creazione, aggiornamento, eliminazione) vengono registrate. AWS CloudTrail
Abilita la CloudTrail registrazione per tracciare:
-
Chi ha creato o modificato le funzionalità
-
Quando sono cambiate le configurazioni delle funzionalità
-
Quali ruoli di capacità sono in uso
Accesso alla rete ed endpoint VPC
Accesso privato all'API Argo CD
È possibile limitare l'accesso al server API Argo CD associando uno o più endpoint VPC all'endpoint Argo CD ospitato. Ciò consente la connettività privata all'interfaccia utente e all'API di Argo CD dall'interno del VPC senza attraversare la rete Internet pubblica.
Nota
Endpoint VPC connessi agli endpoint API Argo CD ospitati (utilizzando le funzionalità eks). region.amazonaws.com) non supportano le politiche degli endpoint VPC.
Distribuzione su cluster privati
La funzionalità Argo CD può implementare applicazioni su cluster EKS completamente privati, offrendo un vantaggio operativo significativo eliminando la necessità di peering VPC o configurazioni di rete complesse. Tuttavia, nel progettare questa architettura, considerate che Argo CD estrae la configurazione dai repository Git (che possono essere pubblici) e la applica ai vostri cluster privati.
Assicuratevi di:
-
Usa repository Git privati per carichi di lavoro sensibili
-
Implementa controlli di accesso e autenticazione adeguati al repository Git
-
Rivedi e approva le modifiche tramite richieste pull prima dell'unione
-
Prendi in considerazione l'utilizzo delle finestre di sincronizzazione di Argo CD per controllare quando possono avvenire le distribuzioni
-
Monitora i registri di controllo di Argo CD per rilevare eventuali modifiche non autorizzate alla configurazione
Conformità
Le funzionalità EKS sono completamente gestite e dispongono delle certificazioni di conformità di Amazon EKS.
Per informazioni aggiornate sulla conformità, consulta AWS Services in Scope by Compliance Program
Fasi successive
-
Configurare le autorizzazioni ACK- Configura le autorizzazioni IAM per ACK
-
Configura le autorizzazioni kro- Configura Kubernetes RBAC per kro
-
Configurare le autorizzazioni di Argo CD- Configura l'integrazione di Identity Center per Argo CD
-
Risoluzione dei problemi delle funzionalità EKS- Risolvi i problemi di sicurezza e autorizzazione