

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 kro 許可
<a name="kro-permissions"></a>

與 ACK 和 Argo CD 不同，kro 不需要 IAM 許可。 kro 完全在您的 Kubernetes 叢集內運作，而且不會進行 AWS API 呼叫。使用標準 Kubernetes RBAC 控制對 kro 資源的存取。

## 許可如何使用 kro
<a name="_how_permissions_work_with_kro"></a>

kro 使用兩種具有不同範圍的 Kubernetes 資源類型：

 **ResourceGraphDefinitions**：定義自訂 APIs叢集範圍資源。通常由設計和維護組織標準的平台團隊管理。

 **執行個體**：從 ResourceGraphDefinitions 建立的命名空間範圍自訂資源。可由具有適當 RBAC 許可的應用程式團隊建立。

根據預設，kro 功能具有透過`AmazonEKSKROPolicy`存取項目政策管理 ResourceGraphDefinitions 及其執行個體的許可。不過，kro 需要額外的許可，才能建立和管理 ResourceGraphDefinitions 中定義的基礎 Kubernetes 資源 （例如部署、服務或 ACK 資源）。您必須透過存取項目政策或 Kubernetes RBAC 授予這些許可。如需授予這些許可的詳細資訊，請參閱 [使用 eksctl 建立 kro 功能](kro-create-eksctl.md)、 [使用 CLI 建立 kro AWS 功能](kro-create-cli.md)或 [使用主控台建立 kro 功能](kro-create-console.md)。

## 平台團隊許可
<a name="_platform_team_permissions"></a>

平台團隊需要許可才能建立和管理 ResourceGraphDefinitions。

 **平台團隊的範例 ClusterRole**：

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

 **綁定平台團隊成員**：

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

## 應用程式團隊許可
<a name="_application_team_permissions"></a>

應用程式團隊需要許可，才能在其命名空間中建立自訂資源的執行個體。

 **應用程式團隊的角色範例**：

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

 **繫結至應用程式團隊成員**：

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

**注意**  
角色 (`kro.run`在此範例中） 中的 API 群組必須符合 ResourceGraphDefinition 結構描述中`apiVersion`定義的 。

## 唯讀存取
<a name="_read_only_access"></a>

授予唯讀存取權以檢視 ResourceGraphDefinitions 和執行個體，無需修改許可。

 **唯讀 ClusterRole**：

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

 **執行個體的唯讀角色**：

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

## 多命名空間存取
<a name="_multi_namespace_access"></a>

授予應用程式團隊使用 ClusterRoles 搭配 RoleBindings 存取多個命名空間的權限。

 **用於多命名空間存取的 ClusterRole**：

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

 **繫結至特定命名空間**：

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

## 最佳實務
<a name="_best_practices"></a>

 **最低權限原則**：僅授予每個團隊責任所需的最低許可。

 **使用群組而非個別使用者**：將角色繫結至群組，而非個別使用者，以便於管理。

 **個別的平台和應用程式考量**：平台團隊管理 ResourceGraphDefinitions、應用程式團隊管理執行個體。

 **命名空間隔離**：使用命名空間隔離不同的團隊或環境，具有 RBAC 控制對每個命名空間的存取。

 **稽核的唯讀存取權**：為安全與合規團隊提供稽核目的的唯讀存取權。

## 後續步驟
<a name="_next_steps"></a>
+  [kro 概念](kro-concepts.md) - 了解 kro 概念和資源合成
+  [EKS 功能的安全考量](capabilities-security.md) - 檢閱 功能的安全最佳實務