Configurare le autorizzazioni di Argo CD - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare le autorizzazioni di Argo CD

La funzionalità gestita da Argo CD si integra con AWS Identity Center per l'autenticazione e utilizza ruoli RBAC integrati per l'autorizzazione. Questo argomento spiega come configurare le autorizzazioni per utenti e team.

Come funzionano le autorizzazioni con Argo CD

La funzionalità Argo CD utilizza AWS Identity Center per l'autenticazione e fornisce tre ruoli RBAC integrati per l'autorizzazione.

Quando un utente accede ad Argo CD:

  1. Si autenticano tramite AWS Identity Center (che può essere collegato al vostro provider di identità aziendale)

  2. AWS Identity Center fornisce informazioni su utenti e gruppi su Argo CD

  3. Argo CD associa utenti e gruppi ai ruoli RBAC in base alla configurazione

  4. Gli utenti vedono solo le applicazioni e le risorse a cui hanno il permesso di accedere

Ruoli RBAC integrati

La funzionalità Argo CD offre tre ruoli integrati che è possibile associare agli utenti e ai gruppi di AWS Identity Center. Si tratta di ruoli con ambito globale che controllano l'accesso alle risorse di Argo CD come progetti, cluster e repository.

Importante

I ruoli globali controllano l'accesso ad Argo CD stesso, non a risorse relative al progetto come le Applicazioni. Gli utenti di EDITOR e VIEWER non possono visualizzare o gestire le applicazioni per impostazione predefinita: hanno bisogno di ruoli di progetto per accedere alle risorse relative al progetto. Ruoli del progetto e accesso all'ambito del progettoPer i dettagli sulla concessione dell'accesso alle applicazioni e ad altre risorse relative al progetto, consulta la sezione.

AMMINISTRATORE

Accesso completo a tutte le risorse e le impostazioni di Argo CD:

  • Crea, aggiorna ed elimina applicazioni e ApplicationSets in qualsiasi progetto

  • Gestisci la configurazione di Argo CD

  • Registra e gestisci i cluster di destinazione della distribuzione

  • Configura l'accesso al repository

  • Crea e gestisci progetti

  • Visualizza lo stato e la cronologia di tutte le candidature

  • Elenca e accedi a tutti i cluster e gli archivi

EDITOR

Può aggiornare i progetti e configurare i ruoli del progetto, ma non può modificare le impostazioni globali di Argo CD:

  • Aggiorna progetti esistenti (non può creare o eliminare progetti)

  • Configura i ruoli e le autorizzazioni del progetto

  • Visualizza chiavi e certificati GPG

  • Impossibile modificare la configurazione globale di Argo CD

  • Non è possibile gestire direttamente cluster o repository

  • Non è possibile visualizzare o gestire le applicazioni senza ruoli di progetto

VISUALIZZATORE

Accesso in sola lettura alle risorse del CD Argo:

  • Visualizza le configurazioni del progetto

  • Elenca tutti i progetti (inclusi i progetti a cui l'utente non è assegnato)

  • Visualizza chiavi e certificati GPG

  • Impossibile elencare cluster o repository

  • Impossibile apportare modifiche

  • Non è possibile visualizzare o gestire le applicazioni senza ruoli di progetto

Nota

Per concedere agli utenti EDITOR o VIEWER l'accesso alle applicazioni, un ADMIN o EDITOR deve creare ruoli di progetto che associano i gruppi di Identity Center a autorizzazioni specifiche all'interno di un progetto.

Ruoli del progetto e accesso all'ambito del progetto

I ruoli globali (ADMIN, EDITOR, VIEWER) controllano l'accesso allo stesso Argo CD. I ruoli del progetto controllano l'accesso alle risorse e alle funzionalità all'interno di un progetto specifico, tra cui:

  • Risorse: applicazioni ApplicationSets, credenziali del repository, credenziali del cluster

  • Funzionalità: accesso ai log, accesso esecutivo ai pod delle applicazioni

Comprensione del modello di autorizzazione a due livelli:

  • Ambito globale: i ruoli predefiniti determinano cosa possono fare gli utenti con progetti, cluster, repository e impostazioni del CD Argo

  • Ambito del progetto: i ruoli del progetto determinano ciò che gli utenti possono fare con le risorse e le funzionalità all'interno di un progetto specifico

Ciò significa che:

  • Gli utenti ADMIN possono accedere a tutte le risorse e le funzionalità del progetto senza configurazioni aggiuntive

  • Agli utenti EDITOR e VIEWER devono essere concessi ruoli di progetto per accedere alle risorse e alle funzionalità del progetto

  • Gli utenti di EDITOR possono creare ruoli di progetto per concedere a se stessi e ad altri l'accesso all'interno di progetti che possono aggiornare

Esempio di flusso di lavoro:

  1. Un ADMIN associa un gruppo Identity Center al ruolo EDITOR a livello globale

  2. Un AMMINISTRATORE crea un progetto per un team

  3. L'EDITOR configura i ruoli del progetto all'interno di quel progetto per concedere ai membri del team l'accesso alle risorse relative al progetto

  4. I membri del team (che possono avere il ruolo globale VIEWER) possono ora visualizzare e gestire le applicazioni in quel progetto in base alle autorizzazioni relative al ruolo di progetto

Per i dettagli sulla configurazione dei ruoli del progetto, consulta. Controllo degli accessi basato su progetti

Configurare le mappature dei ruoli

Associa gli utenti e i gruppi di AWS Identity Center ai ruoli di Argo CD durante la creazione o l'aggiornamento della funzionalità.

Esempio di mappatura dei ruoli:

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

I nomi dei ruoli fanno distinzione tra maiuscole e minuscole e devono essere maiuscole (ADMIN, EDITOR, VIEWER).

Importante

L'integrazione di EKS Capabilities con AWS Identity Center supporta fino a 1.000 identità per funzionalità Argo CD. Un'identità può essere un utente o un gruppo.

Aggiorna le mappature dei ruoli:

aws eks 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" } ] } ] } } }'

Utilizzo dell'account amministratore

L'account amministratore è progettato per la configurazione iniziale e le attività amministrative come la registrazione di cluster e la configurazione dei repository.

Quando l'account amministratore è appropriato:

  • Configurazione e configurazione delle funzionalità iniziali

  • Sviluppo individuale o dimostrazioni rapide

  • Attività amministrative (registrazione del cluster, configurazione del repository, creazione di progetti)

Procedure consigliate per l'account amministratore:

  • Non affidare i token dell'account al controllo delle versioni

  • Ruota immediatamente i token se esposti

  • Limita l'utilizzo dei token dell'account alle attività di configurazione e amministrative

  • Imposta tempi di scadenza brevi (massimo 12 ore)

  • È possibile creare solo 5 token di account alla volta

Quando utilizzare invece l'accesso basato su progetti:

  • Ambienti di sviluppo condivisi con più utenti

  • Qualsiasi ambiente che assomigli alla produzione

  • Quando hai bisogno di audit trail che indichino chi ha eseguito le azioni

  • Quando è necessario imporre restrizioni sulle risorse o limiti di accesso

Per ambienti di produzione e scenari multiutente, utilizza il controllo degli accessi basato su progetti con ruoli RBAC dedicati mappati ai gruppi di Identity Center. AWS

Controllo degli accessi basato su progetti

Usa Argo CD Projects (AppProject) per fornire un controllo granulare degli accessi e l'isolamento delle risorse per i team.

Importante

Prima di assegnare utenti o gruppi a ruoli specifici del progetto, è necessario mapparli a un ruolo globale di Argo CD (ADMIN, EDITOR o VIEWER) nella configurazione delle funzionalità. Gli utenti non possono accedere ad Argo CD senza una mappatura globale dei ruoli, anche se sono assegnati a ruoli di progetto.

Prendi in considerazione la possibilità di associare gli utenti al ruolo VIEWER a livello globale, quindi concedi autorizzazioni aggiuntive tramite ruoli specifici del progetto. Ciò fornisce un accesso di base e consente al contempo un controllo granulare a livello di progetto.

I progetti forniscono:

  • Restrizioni all'origine: limita i repository Git che possono essere utilizzati

  • Restrizioni sulla destinazione: limita i cluster e i namespace a cui è possibile rivolgersi

  • Restrizioni sulle risorse: limita i tipi di risorse Kubernetes che possono essere distribuiti

  • Integrazione RBAC: mappa i progetti ai gruppi di AWS Identity Center o ai ruoli di Argo CD

Esempio di progetto per l'isolamento del team:

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: description: Team A applications # Required: Specify which namespaces this project watches for Applications sourceNamespaces: - argocd # 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

Namespace di origine

Quando si utilizza la funzionalità EKS Argo CD, il spec.sourceNamespaces campo è obbligatorio nelle definizioni. AppProject Questo campo specifica quale spazio dei nomi può contenere applicazioni o ApplicationSets che fanno riferimento a questo progetto.

Importante

La funzionalità EKS Argo CD supporta solo un singolo spazio dei nomi per le applicazioni e, in genere, lo spazio ApplicationSets dei nomi specificato durante la creazione della funzionalità. argocd Ciò differisce dal CD open source Argo che supporta più namespace.

AppProject configurazione

Tutti AppProjects devono includere lo spazio dei nomi configurato della funzionalità in: sourceNamespaces

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a-project namespace: argocd spec: description: Applications for Team A # Required: Specify the capability's configured namespace (configuration.argoCd.namespace) sourceNamespaces: - argocd # Must match your capability's namespace configuration # Source repositories this project can deploy from sourceRepos: - 'https://github.com/my-org/team-a-*' # Destination restrictions destinations: - namespace: 'team-a-*' server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
Nota

Se ometti lo spazio dei nomi della funzionalità dasourceNamespaces, le applicazioni o ApplicationSets in tale spazio dei nomi non possono fare riferimento a questo progetto, con conseguenti errori di distribuzione.

Assegna utenti ai progetti:

I ruoli di progetto garantiscono agli utenti EDITOR e VIEWER l'accesso alle risorse del progetto (applicazioni ApplicationSets, repository e credenziali del cluster) e alle funzionalità (log, exec). Senza ruoli di progetto, questi utenti non possono accedere a queste risorse anche se dispongono di un accesso globale ai ruoli.

Gli utenti ADMIN hanno accesso a tutte le applicazioni senza bisogno di ruoli di progetto.

Esempio: concessione dell'accesso all'applicazione ai membri del team

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: # ... project configuration ... sourceNamespaces: - argocd # Project roles grant Application-level access roles: - name: developer description: Team A developers - can manage Applications policies: - p, proj:team-a:developer, applications, *, team-a/*, allow - p, proj:team-a:developer, clusters, get, *, allow # See cluster names in UI groups: - 686103e0-f051-7068-b225-e6392b959d9e # Identity Center group ID - name: viewer description: Team A viewers - read-only Application access policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow - p, proj:team-a:viewer, clusters, get, *, allow # See cluster names in UI groups: - 786203e0-f051-7068-b225-e6392b959d9f # Identity Center group ID
Nota

Includi ruoli clusters, get, *, allow nel progetto per consentire agli utenti di visualizzare i nomi dei cluster nell'interfaccia utente. Senza questa autorizzazione, il cluster di destinazione viene visualizzato come «sconosciuto».

Comprensione delle politiche relative ai ruoli del progetto:

Il formato della politica è: p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>

Politiche relative alle risorse:

  • applications, , team-a/, allow- Accesso completo a tutte le applicazioni del progetto team-a

  • applications, get, team-a/*, allow- Accesso in sola lettura alle applicazioni

  • applications, sync, team-a/*, allow- Può sincronizzare le applicazioni ma non creare/eliminare

  • applications, delete, team-a/*, allow- Può eliminare le applicazioni (usare con cautela)

  • applicationsets, , team-a/, allow- Accesso completo a ApplicationSets

  • repositories, *, *, allow- Accesso alle credenziali del repository

  • clusters, *, *, allow- Accesso alle credenziali del cluster

Politiche di capacità:

  • logs, , team-a/, allow- Accesso ai registri delle applicazioni

  • exec, , team-a/, allow- Accesso esecutivo ai pod delle applicazioni

Nota

Gli utenti di EDITOR possono creare ruoli di progetto per concedere a se stessi e ad altri le autorizzazioni all'interno dei progetti che possono aggiornare. Ciò consente ai responsabili del team di controllare l'accesso alle risorse relative al progetto per il proprio team senza richiedere l'intervento dell'AMMINISTRATORE.

Nota

Utilizza il gruppo Identity Center IDs (non i nomi dei gruppi) nel campo. groups È inoltre possibile utilizzare l'utente Identity Center IDs per l'accesso dei singoli utenti. Trovali IDs nella console di AWS Identity Center o utilizzando la AWS CLI.

Schemi di autorizzazione comuni

Modello 1: team di amministrazione con accesso completo

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

Gli utenti ADMIN possono visualizzare e gestire tutte le risorse relative al progetto senza configurazioni aggiuntive.

Schema 2: i responsabili del team gestiscono i progetti, gli sviluppatori accedono tramite i ruoli di progetto

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
  1. ADMIN crea progetti per ogni team

  2. I team leader (EDITOR) configurano i ruoli del progetto per garantire ai propri sviluppatori l'accesso alle risorse del progetto (applicazioni ApplicationSets, credenziali) e alle funzionalità (log, exec)

  3. Gli sviluppatori (VIEWER) possono accedere solo alle risorse e alle funzionalità consentite dai rispettivi ruoli di progetto

Modello 3: accesso basato sul team con ruoli di progetto

  1. ADMIN crea progetti e mappa i leader del team al ruolo di EDITOR a livello globale

  2. I team leader (EDITOR) assegnano ai membri del team i ruoli di progetto all'interno dei loro progetti

  3. Ai membri del team è richiesto solo il ruolo globale di VIEWER: i ruoli di progetto forniscono l'accesso alle risorse e alle funzionalità del progetto

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

Best practice

Utilizza i gruppi anziché i singoli utenti: associa i gruppi di AWS Identity Center ai ruoli di Argo CD anziché ai singoli utenti per una gestione più semplice.

Inizia con il privilegio minimo: inizia con l'accesso VIEWER e concedi EDITOR o ADMIN secondo necessità.

Usa i progetti per l'isolamento del team: crea ambienti separati AppProjects per team o ambienti diversi per far rispettare i limiti.

Sfrutta la federazione di Identity Center: configura AWS Identity Center per la federazione con il tuo provider di identità aziendale per una gestione centralizzata degli utenti.

Revisioni periodiche degli accessi: rivedi periodicamente le mappature dei ruoli e le assegnazioni dei progetti per garantire livelli di accesso appropriati.

Limita l'accesso al cluster: ricorda che Argo CD RBAC controlla l'accesso alle risorse e alle operazioni di Argo CD, ma non corrisponde a Kubernetes RBAC. Gli utenti con accesso ad Argo CD possono distribuire applicazioni nei cluster a cui Argo CD ha accesso. Limita i cluster a cui Argo CD può accedere e utilizza le restrizioni sulla destinazione del progetto per controllare dove possono essere distribuite le applicazioni.

AWS autorizzazioni di servizio

Per utilizzare AWS i servizi direttamente nelle risorse dell'applicazione (senza creare risorse di repository), collega le autorizzazioni IAM richieste al Capability Role.

Grafici ECR for Helm:

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

CodeCommit archivi:

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

Configurare l'accesso al repositoryPer i dettagli sull'utilizzo di queste integrazioni, consulta la pagina.

Fasi successive