View a markdown version of this page

Considerazioni sulla sicurezza per EKS Capabilities - Amazon EKS

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 su che si trova 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 architetturali 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 servizi, alle risorse Kubernetes all'interno del cluster e alle integrazioni con Secrets Manager e altri AWS servizi. AWS CodeConnections AWS AWS

Capability: ruolo IAM

Quando crei una capacità, fornisci un ruolo di funzionalità IAM che EKS utilizza per eseguire azioni per tuo conto. Questo ruolo deve:

È 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, potrebbero non essere richieste autorizzazioni 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 ARN e chiavi di condizione anziché utilizzare autorizzazioni wildcard.

Per informazioni dettagliate sulla creazione e la configurazione dei ruoli IAM di 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à le autorizzazioni di base di 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 affinché la funzionalità Argo CD possa distribuire e gestire le applicazioni.

La voce di accesso include:

  • L'IAM ha il ruolo di ARN come principale

  • Capability-specific politiche di accesso che concedono le autorizzazioni Kubernetes di base

  • Ambito appropriato (a livello di cluster o con ambito di namespace) in base al tipo di funzionalità

Nota

Per Argo CD, le autorizzazioni con ambito di namespace vengono concesse allo spazio dei nomi specificato nella configurazione della capacità (il valore predefinito è). argocd

Criteri di accesso predefiniti per capacità

Ogni tipo di funzionalità concede al ruolo di funzionalità 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 RGD.

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 ad Argo CD per scoprire risorse e gestire oggetti con ambito di cluster.

  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDPolicy(con ambito di namespace)

    Concede autorizzazioni a livello di namespace per Argo CD per distribuire e gestire le applicazioni. L'ambito è basato sullo spazio dei nomi specificato nella configurazione della 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 immissione di accesso predefinite. Puoi concedere queste autorizzazioni utilizzando:

  • Politiche di accesso: associa politiche gestite aggiuntive alla voce di accesso

  • Kubernetes RBAC: creazione Role di ClusterRole collegamenti per l'utente Kubernetes della funzionalità

Autorizzazioni dei lettori segreti 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:

  1. arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicyAssocia la politica di accesso alla voce di accesso della funzionalità

  2. Ambita 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 quando si associa la politica di immissione degli accessi. Ciò consente di limitare i segreti a cui la funzionalità può accedere.

o autorizzazioni arbitrarie per le risorse

Per impostazione predefinita, kro può controllare e gestire ResourceGraphDefinitions (RGD) e le relative istanze. Per gestire risorse composte come Deployments, Services o ConfigMaps, configura autorizzazioni Kubernetes aggiuntive.

Per concedere a kro le autorizzazioni per creare risorse:

Opzione 1: accedere alle politiche di ingresso

Associa politiche di accesso predefinite come AmazonEKSAdminPolicy o AmazonEKSEditPolicy alla voce di accesso della funzionalità.

Opzione 2: Kubernetes RBAC

Creane uno 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 (in maiuscolo) viene impostato automaticamente dalla funzionalità EKS kro.

Autorizzazioni IAM richieste dalla funzionalità

kro (Kube Resource Orchestrator)

Non sono richieste autorizzazioni IAM. È possibile 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 le autorizzazioni per servizi, azioni e risorse specifici in base alle proprie esigenze. Per informazioni dettagliate sulla configurazione delle autorizzazioni ACK, incluse le best practice 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 di capacità solo le autorizzazioni necessarie per il tuo caso d'uso. Ciò non significa che non puoi concedere ampie autorizzazioni amministrative alle tue capacità, se necessario. In questi casi, è necessario regolare l'accesso a tali risorse in modo appropriato.

Ruoli di capacità:

  • ACK: quando possibile, limita le autorizzazioni IAM a AWS servizi e risorse specifici di cui i tuoi team hanno bisogno, in base al caso d'uso e ai requisiti

  • Argo CD: limita l'accesso a specifici repository Git e namespace Kubernetes

  • kro: Richiede un ruolo di funzionalità per la policy di fiducia, ma non sono necessarie autorizzazioni IAM (utilizza solo il cluster RBAC)

Esempio: invece di"Resource": "*", specifica i modelli per risorse o gruppi di risorse specifici.

"Resource": [ "arn:aws:s3:::my-app-*", "arn:aws:rds:us-west-2:111122223333:db:prod-*" ]

Usa le chiavi di condizione IAM per limitare ulteriormente l'accesso:

"Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } }

Per ulteriori informazioni sulla configurazione IAM, consulta la sezione delle considerazioni per ciascuna funzionalità.

Isolamento dello spazio dei nomi per i segreti dei CD Argo

La funzionalità Argo CD gestita ha accesso a tutti i segreti di Kubernetes all'interno del namespace configurato (impostazione predefinita:). argocd Per mantenere una postura di sicurezza ottimale, segui queste pratiche di isolamento dello spazio dei nomi:

  • Mantieni solo i CD-relevant segreti di Argo all'interno dello spazio dei nomi Argo CD

  • Evita di archiviare segreti applicativi non correlati nello stesso namespace del CD Argo

  • Utilizzate namespace separati per i segreti delle applicazioni che non sono necessari per le operazioni con 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 di Argo. CD-specific

Kubernetes RBAC

Controlla quali utenti e account di servizio possono creare e gestire risorse di funzionalità. È consigliabile distribuire le risorse di capacità in namespace dedicati con politiche RBAC appropriate.

Esempio: il ruolo RBAC funziona con ACK, consentendo 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 le configurazioni delle funzionalità sono cambiate

  • Quali ruoli di funzionalità sono in uso

Accesso alla rete ed endpoint VPC

Accesso privato all'API Argo CD

È possibile limitare l'accesso al server Argo CD API associando uno o più endpoint VPC all'endpoint Argo CD ospitato. Ciò consente la connettività privata dall'interno del VPC senza attraversare la rete Internet pubblica. L'endpoint VPC fornisce l'accesso sia all'interfaccia utente web di Argo CD che all'API Argo CD (incluso l'accesso alla CLI).

Nota

Endpoint VPC connessi agli endpoint API Argo CD ospitati (utilizzando eks-capabilities). region.amazonaws.com) non supportano le policy sugli endpoint VPC.

Distribuzione su cluster privati

La funzionalità Argo CD può distribuire applicazioni su cluster EKS completamente privati, fornendo un significativo vantaggio operativo eliminando la necessità di peering VPC o configurazioni di rete complesse. Tuttavia, quando progettate questa architettura, tenete presente che Argo CD estrae la configurazione dai repository Git (che possono essere pubblici) e la applicherà ai cluster privati.

Assicuratevi di:

  • Usa repository Git privati per carichi di lavoro sensibili

  • Implementa i controlli di accesso e l'autenticazione del repository Git appropriati

  • Rivedi e approva le modifiche tramite richieste pull prima di unirle

  • 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 eventuali modifiche alla configurazione non autorizzate

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