Configura le autorizzazioni kro - 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 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à.

Configura le autorizzazioni kro

A differenza di ACK e Argo CD, kro non richiede autorizzazioni IAM. kro opera interamente all'interno del cluster Kubernetes e non effettua chiamate API. AWS Controlla l'accesso alle risorse kro utilizzando Kubernetes RBAC standard.

Come funzionano le autorizzazioni con kro

kro utilizza due tipi di risorse Kubernetes con ambiti diversi:

ResourceGraphDefinitions: risorse con ambito cluster che definiscono la personalizzazione. APIs In genere gestite dai team della piattaforma che progettano e gestiscono gli standard organizzativi.

Istanze: risorse personalizzate con ambito namespace create da. ResourceGraphDefinitions Può essere creato da team di applicazioni con autorizzazioni RBAC appropriate.

Per impostazione predefinita, la funzionalità kro dispone delle autorizzazioni per gestire le relative istanze tramite ResourceGraphDefinitions la politica di accesso. AmazonEKSKROPolicy Tuttavia, kro richiede autorizzazioni aggiuntive per creare e gestire le risorse Kubernetes sottostanti definite nell'utente ResourceGraphDefinitions (come Deployments, Services o risorse ACK). È necessario concedere queste autorizzazioni tramite le politiche di accesso o Kubernetes RBAC. Per i dettagli sulla concessione di queste autorizzazioni, consulta kro arbitrary resource permissions.

Autorizzazioni del team della piattaforma

I team della piattaforma necessitano delle autorizzazioni per creare e gestire. ResourceGraphDefinitions

Esempio ClusterRole per i team della piattaforma:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kro-platform-admin rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["*"]

Associati ai membri del team della piattaforma:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: platform-team-kro-admin subjects: - kind: Group name: platform-team apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: kro-platform-admin apiGroup: rbac.authorization.k8s.io

Autorizzazioni del team dell'applicazione

I team applicativi necessitano delle autorizzazioni per creare istanze di risorse personalizzate nei propri namespace.

Esempio di ruolo per i team delle applicazioni:

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: kro-app-developer namespace: my-app rules: - apiGroups: ["kro.run"] resources: ["webapps", "databases"] verbs: ["create", "get", "list", "update", "delete", "patch"]

Associarsi ai membri del team applicativo:

apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: app-team-kro-developer namespace: my-app subjects: - kind: Group name: app-team apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: kro-app-developer apiGroup: rbac.authorization.k8s.io
Nota

Il gruppo di API nel ruolo (kro.runin questo esempio) deve corrispondere a quello apiVersion definito nello schema ResourceGraphDefinition dell'utente.

Accesso in sola lettura

Concedi l'accesso in sola lettura alla visualizzazione ResourceGraphDefinitions e alle istanze senza autorizzazioni di modifica.

ClusterRoleSola lettura:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kro-viewer rules: - apiGroups: ["kro.run"] resources: ["resourcegraphdefinitions"] verbs: ["get", "list", "watch"]

Ruolo di sola lettura per le istanze:

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: kro-instance-viewer namespace: my-app rules: - apiGroups: ["kro.run"] resources: ["webapps", "databases"] verbs: ["get", "list", "watch"]

Accesso a più namespace

Concedi ai team delle applicazioni l'accesso a più namespace utilizzando with. ClusterRoles RoleBindings

ClusterRole per l'accesso a più namespace:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: kro-multi-namespace-developer rules: - apiGroups: ["kro.run"] resources: ["webapps"] verbs: ["create", "get", "list", "update", "delete"]

Associa a namespace specifici:

apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: app-team-dev-access namespace: development subjects: - kind: Group name: app-team apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: kro-multi-namespace-developer apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: app-team-staging-access namespace: staging subjects: - kind: Group name: app-team apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: kro-multi-namespace-developer apiGroup: rbac.authorization.k8s.io

Best practice

Principio del privilegio minimo: concedi solo le autorizzazioni minime necessarie per le responsabilità di ogni team.

Usa i gruppi anziché i singoli utenti: associa i ruoli ai gruppi anziché ai singoli utenti per una gestione più semplice.

Aspetti distinti relativi alla piattaforma e all'applicazione: i team della piattaforma gestiscono le istanze ResourceGraphDefinitions, i team delle applicazioni gestiscono le istanze.

Isolamento dello spazio dei nomi: utilizza i namespace per isolare team o ambienti diversi, con RBAC che controlla l'accesso a ciascun namespace.

Accesso in sola lettura per il controllo: Fornisci l'accesso in sola lettura ai team di sicurezza e conformità per scopi di controllo.

Fasi successive