

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Configuração de permissões do kro
<a name="kro-permissions"></a>

Ao contrário do ACK e do Argo CD, o kro não requer permissões do IAM. O kro opera inteiramente no cluster do Kubernetes e não faz chamadas de API da AWS. Controle o acesso aos recursos do kro usando o RBAC padrão do Kubernetes.

## Funcionamento de permissões com o kro
<a name="_how_permissions_work_with_kro"></a>

O kro usa dois tipos de recursos do Kubernetes com escopos diferentes:

 **ResourceGraphDefinitions**: recursos com escopo de cluster para a definição de APIs personalizadas. Geralmente, esses recursos são gerenciados por equipes responsáveis pela plataforma que projetam e mantêm os padrões organizacionais.

 **Instâncias**: recursos personalizados com escopo de namespace criados com base em ResourceGraphDefinitions. Podem ser criados por equipes responsáveis pela aplicação com as permissões de RBAC apropriadas.

Por padrão, a funcionalidade do kro tem permissões para gerenciar ResourceGraphDefinitions e as respectivas instâncias por meio da política de entrada de acesso `AmazonEKSKROPolicy`. No entanto, o kro requer permissões adicionais para criar e gerenciar os recursos subjacentes do Kubernetes definidos em suas ResourceGraphDefinitions (como Deployments, Services ou recursos do ACK). Você deve conceder essas permissões por meio de políticas de entrada de acesso ou de RBAC do Kubernetes. Para detalhes sobre a concessão dessas permissões, consulte a seção [Permissões de recursos arbitrários do kro](capabilities-security.md#kro-resource-permissions).

## Permissões da equipe responsável pela plataforma
<a name="_platform_team_permissions"></a>

As equipes responsáveis pela plataforma precisam de permissões para criar e gerenciar ResourceGraphDefinitions.

 **Exemplo de ClusterRole para as equipes responsáveis pela plataforma**:

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

 **Vincule aos membros da equipe responsável pela plataforma**:

```
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
```

## Permissões da equipe responsável pela aplicação
<a name="_application_team_permissions"></a>

As equipes responsáveis pela aplicação precisam de permissões para criar instâncias de recursos personalizados em seus namespaces.

 **Exemplo de perfil para as equipes responsáveis pela aplicação**:

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

 **Vincule aos membros da equipe responsável pela aplicação**:

```
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**  
O grupo de API no perfil (`kro.run` neste exemplo) deve corresponder à `apiVersion` definida no esquema da ResourceGraphDefinition.

## Acesso somente leitura.
<a name="_read_only_access"></a>

Conceda acesso somente de leitura para a visualização de ResourceGraphDefinitions e de instâncias, sem permissões de modificação.

 **ClusterRole somente de leitura**:

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

 **Perfil somente de leitura para as instâncias**:

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

## Acesso a vários namespaces
<a name="_multi_namespace_access"></a>

Conceda às equipes responsáveis pela aplicação acesso a vários namespaces usando ClusterRoles com RoleBindings.

 **ClusterRole para acesso a vários namespaces**:

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

 **Vincule a namespaces 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áticas recomendadas
<a name="_best_practices"></a>

 **Princípio do privilégio mínimo**: conceda somente as permissões mínimas necessárias para que cada equipe execute suas responsabilidades.

 **Use grupos em vez de usuários individuais**: vincule perfis a grupos, em vez de usuários individuais, para facilitar o gerenciamento.

 **Separação de responsabilidades entre equipes de plataforma e aplicação**: equipes responsáveis pela plataforma gerenciam ResourceGraphDefinitions, enquanto equipes responsáveis pela aplicação gerenciam instâncias.

 **Isolamento de namespace**: use namespaces para isolar diferentes equipes ou ambientes, com o RBAC controlando o acesso a cada namespace.

 **Acesso somente de leitura para auditoria**: forneça acesso somente de leitura para equipes responsáveis pela segurança e pela conformidade para fins de auditoria.

## Próximas etapas
<a name="_next_steps"></a>
+  [Conceitos do kro](kro-concepts.md): compreenda os conceitos do kro e a composição de recursos
+  [Conceitos do kro](kro-concepts.md): compreenda sobre o SimpleSchema, expressões CEL e padrões de composição
+  [Considerações sobre segurança para funcionalidades do EKS](capabilities-security.md): analise as práticas recomendadas de segurança para as funcionalidades