設定 Argo CD 許可 - Amazon EKS

協助改進此頁面

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

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

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

設定 Argo CD 許可

Argo CD 受管功能與 AWS Identity Center 整合以進行身分驗證,並使用內建的 RBAC 角色進行授權。本主題說明如何設定使用者和團隊的許可。

許可如何使用 Argo CD

Argo CD 功能使用 AWS Identity Center 進行身分驗證,並提供三個內建 RBAC 角色進行授權。

當使用者存取 Argo CD 時:

  1. 他們使用 AWS Identity Center 進行身分驗證 (可以聯合到您的公司身分提供者)

  2. AWS Identity Center 提供使用者和群組資訊給 Argo CD

  3. Argo CD 會根據您的組態,將使用者和群組映射至 RBAC 角色

  4. 使用者只會看到他們有權存取的應用程式和資源

內建 RBAC 角色

Argo CD 功能提供三個您映射到 AWS Identity Center 使用者和群組的內建角色。

ADMIN

完整存取所有應用程式和設定:

  • 建立、更新和刪除應用程式和 ApplicationSets

  • 管理 Argo CD 組態

  • 註冊和管理部署目標叢集

  • 設定儲存庫存取

  • 管理專案

  • 檢視所有應用程式狀態和歷史記錄

EDITOR

可以建立和修改應用程式,但無法變更 Argo CD 設定:

  • 建立和更新應用程式和 ApplicationSets

  • 同步和重新整理應用程式

  • 檢視應用程式狀態和歷史記錄

  • 無法刪除應用程式

  • 無法變更 Argo CD 組態

  • 無法管理叢集或儲存庫

檢視程式

應用程式的唯讀存取:

  • 檢視應用程式狀態和歷史記錄

  • 檢視應用程式資訊清單和資源

  • 無法進行任何變更

  • 無法同步或重新整理應用程式

設定角色映射

在建立或更新功能時,將 AWS Identity Center 使用者和群組映射至 Argo CD 角色。

範例角色映射

{ "rbacRoleMapping": { "ADMIN": ["AdminGroup", "alice@example.com"], "EDITOR": ["DeveloperGroup", "DevOpsTeam"], "VIEWER": ["ReadOnlyGroup", "bob@example.com"] } }
注意

角色名稱區分大小寫,且必須是大寫 (ADMIN、EDITOR、VIEWER)。

重要

EKS 功能與 AWS Identity Center 整合支援每個 Argo CD 功能最多 1,000 個身分。身分可以是使用者或群組。

更新角色映射

aws eksfe update-capability \ --region us-east-1 \ --cluster-name cluster \ --capability-name capname \ --endpoint "https://eks.ap-northeast-2.amazonaws.com" \ --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \ --configuration '{ "argoCd": { "rbacRoleMappings": { "addOrUpdateRoleMappings": [ { "role": "ADMIN", "identities": [ { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" } ] } ] } } }'

管理員帳戶用量

管理員帳戶專為初始設定和管理任務而設計,例如註冊叢集和設定儲存庫。

當管理員帳戶適當時

  • 初始功能設定和組態

  • Solo 開發或快速示範

  • 管理任務 (叢集註冊、儲存庫組態、專案建立)

管理員帳戶的最佳實務

  • 不要將帳戶字符遞交至版本控制

  • 如果權杖公開,請立即輪換權杖

  • 將帳戶字符用量限制為設定和管理任務

  • 設定短過期時間 (最長 12 小時)

  • 任何指定時間只能建立 5 個帳戶字符

改用專案型存取的時機

  • 與多個使用者共用開發環境

  • 任何類似生產的環境

  • 當您需要執行動作之人員的稽核線索時

  • 當您需要強制執行資源限制或存取界限時

對於生產環境和多使用者案例,請使用專案型存取控制搭配映射至 AWS Identity Center 群組的專用 RBAC 角色。

專案型存取控制

使用 Argo CD Projects (AppProject) 為團隊提供精細的存取控制和資源隔離。

專案提供:

  • 來源限制:限制哪些 Git 儲存庫可以使用

  • 目的地限制:限制哪些叢集和命名空間可以成為目標

  • 資源限制:限制可以部署哪些 Kubernetes 資源類型

  • RBAC 整合:將專案映射至 AWS Identity Center 群組或 Argo CD 角色

團隊隔離的範例專案

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: description: Team A applications # Source restrictions sourceRepos: - https://github.com/myorg/team-a-apps # Destination restrictions destinations: - namespace: team-a-* server: arn:aws:eks:us-west-2:111122223333:cluster/production # Resource restrictions clusterResourceWhitelist: - group: '' kind: Namespace namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service - group: '' kind: ConfigMap

將使用者指派給專案

具有 EDITOR 或 VIEWER 角色的使用者可以限制在特定專案。ADMIN 使用者可存取所有專案。

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a spec: # ... project configuration ... # Map Identity Center groups to project roles roles: - name: developer description: Team A developers policies: - p, proj:team-a:developer, applications, *, team-a/*, allow groups: - TeamADevelopers - name: viewer description: Team A viewers policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow groups: - TeamAViewers

常見許可模式

模式 1:具有完整存取權的管理團隊

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }

模式 2:開發人員可以部署,其他人可以檢視

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["DevelopmentTeam", "DevOpsTeam"], "VIEWER": ["AllEmployees"] } }

模式 3:以團隊為基礎的隔離與專案

  1. 將所有開發人員映射至 EDITOR 角色

  2. 為每個團隊建立個別AppProjects

  3. 使用專案角色來限制對團隊特定應用程式的存取

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["AllDevelopers"] } }

然後建立具有團隊特定限制和角色映射的專案。

最佳實務

使用群組而非個別使用者:將 AWS Identity Center 群組映射至 Argo CD 角色,而非個別使用者,以便更輕鬆地管理。

從最低權限開始:從 VIEWER 存取開始,並視需要授予 EDITOR 或 ADMIN。

使用專案進行團隊隔離:為不同的團隊或環境建立單獨的 AppProjects以強制執行界限。

利用 Identity Center 聯合:設定 AWS Identity Center 與您的公司身分提供者聯合以進行集中式使用者管理。

定期存取檢閱:定期檢閱角色映射和專案指派,以確保適當的存取層級。

限制叢集存取:請記住,Argo CD RBAC 會控制對 Argo CD 資源和操作的存取,但不對應至 Kubernetes RBAC。具有 Argo CD 存取權的使用者可以將應用程式部署到 Argo CD 可存取的叢集。限制 Argo CD 可存取的叢集,並使用專案目的地限制來控制應用程式可部署的位置。

AWS 服務許可

若要直接在應用程式資源中使用 AWS 服務 (無需建立儲存庫資源),請將所需的 IAM 許可連接到功能角色。

Helm Chart 的 ECR

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

CodeCommit 儲存庫

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }

CodeConnections (GitHub、GitLab、Bitbucket)

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:UseConnection" ], "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }

如需使用這些整合的詳細資訊設定儲存庫存取,請參閱 。

後續步驟