Configuración de permisos de kro - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Configuración de permisos de kro

A diferencia de ACK y Argo CD, kro no necesita permisos de IAM. kro opera completamente dentro de su clúster de Kubernetes y no hace llamadas a la API de AWS. Controle el acceso a los recursos de kro mediante el RBAC estándar de Kubernetes.

Cómo funcionan los permisos con kro

kro utiliza dos tipos de recursos de Kubernetes con diferentes ámbitos:

ResourceGraphDefinitions: recursos del ámbito del clúster que definen las API personalizadas. Por lo general, los administran los equipos de plataformas que diseñan y mantienen los estándares organizativos.

Instancias: recursos personalizados del ámbito del espacio de nombres creados a partir de ResourceGraphDefinitions. Los equipos de aplicaciones pueden crearlos con los permisos de RBAC adecuados.

De forma predeterminada, la capacidad de kro tiene permisos para administrar ResourceGraphDefinitions y sus instancias mediante la política de entrada de acceso AmazonEKSKROPolicy. Sin embargo, kro requiere permisos adicionales para crear y administrar los recursos de Kubernetes subyacentes definidos en las ResourceGraphDefinitions (como implementaciones, servicios o recursos de ACK). Debe otorgar estos permisos mediante las políticas de entrada de acceso o el RBAC de Kubernetes. Para obtener más información sobre la concesión de estos permisos, consulte los permisos de recursos arbitrarios de kro.

Permisos del equipo de plataformas

Los equipos de plataformas necesitan permisos para crear y administrar ResourceGraphDefinitions.

Ejemplo de ClusterRole para equipos de plataformas:

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

Enlace a miembros del equipo de plataformas:

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

Permisos del equipo de aplicaciones

Los equipos de aplicaciones necesitan permisos para crear instancias de recursos personalizados en sus espacios de nombres.

Ejemplo de rol para equipos de aplicaciones:

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"]

Enlace a miembros del equipo de aplicaciones:

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

El grupo de API del rol (kro.run en este ejemplo) debe coincidir con la apiVersion definida en el esquema de ResourceGraphDefinition.

Acceso de solo lectura

Otorgue acceso de solo lectura para ver las ResourceGraphDefinitions e instancias sin permisos de modificación.

ClusterRole de solo lectura:

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

Rol de solo lectura para instancias:

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"]

Acceso a varios espacios de nombres

Otorgue a los equipos de aplicaciones acceso a varios espacios de nombres mediante ClusterRoles con RoleBindings.

ClusterRole para el acceso a varios espacios de nombres:

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"]

Enlace a espacios de nombres específicos:

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

Prácticas recomendadas

Principio de privilegio mínimo: otorgue solo los permisos mínimos necesarios para las responsabilidades de cada equipo.

Uso de grupos en lugar de usuarios individuales: enlace roles a grupos en lugar de usuarios individuales para facilitar la administración.

Preocupaciones de aplicaciones y plataformas independientes: los equipos de plataformas administran ResourceGraphDefinitions, mientras que los equipos de aplicaciones administran instancias.

Aislamiento del espacio de nombres: utilice los espacios de nombres para aislar diferentes equipos o entornos, con RBAC como control de acceso a cada espacio de nombres.

Acceso de solo lectura para auditoría: proporcione acceso de solo lectura a los equipos de seguridad y cumplimiento con fines de auditoría.

Siguientes pasos