

 **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 name="kro-permissions"></a>

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
<a name="_how_permissions_work_with_kro"></a>

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](capabilities-security.md#kro-resource-permissions).

## Permisos del equipo de plataformas
<a name="_platform_team_permissions"></a>

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
<a name="_application_team_permissions"></a>

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
<a name="_read_only_access"></a>

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
<a name="_multi_namespace_access"></a>

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
<a name="_best_practices"></a>

 **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
<a name="_next_steps"></a>
+  [Conceptos de kro](kro-concepts.md): descripción de los conceptos de kro y la composición de recursos
+  [Conceptos de kro](kro-concepts.md): descripción de SimpleSchema, las expresiones de CEL y los patrones de composición
+  [Consideraciones sobre la seguridad para las capacidades de EKS](capabilities-security.md): revisión de las prácticas recomendadas de seguridad para capacidades