View a markdown version of this page

Configurare le autorizzazioni 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 su che si trova 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 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 utilizzando AWS Identity Center (che può essere federato con il tuo provider di identità aziendale)

  2. AWS Identity Center fornisce informazioni su utenti e gruppi ad 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

Built-in Ruoli RBAC

La funzionalità Argo CD offre tre ruoli integrati che puoi mappare 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 al CD Argo stesso, non alle 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 dei ruoli di progetto per accedere alle risorse relative al progetto. Ruoli del progetto e accesso nell'ambito del progettoPer informazioni dettagliate sulla concessione dell'accesso alle applicazioni e ad altre risorse relative al progetto, consulta.

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 del CD Argo

  • Registra e gestisci i cluster target di distribuzione

  • Configurare 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 i repository

REDATTORE

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

  • Aggiornare i progetti esistenti (non è possibile creare o eliminare progetti)

  • Configura i ruoli e le autorizzazioni del progetto

  • Visualizza le chiavi e i certificati GPG

  • Impossibile modificare la configurazione globale di Argo CD

  • Non è possibile gestire direttamente cluster o repository

  • Impossibile visualizzare o gestire le applicazioni senza ruoli di progetto

VISUALIZZATORE

Read-only accesso alle risorse Argo CD:

  • Visualizza le configurazioni del progetto

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

  • Visualizza le chiavi e i certificati GPG

  • Impossibile elencare cluster o repository

  • Non è possibile apportare modifiche

  • Impossibile 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 nell'ambito del progetto

I ruoli globali (ADMIN, EDITOR, VIEWER) controllano l'accesso al CD Argo stesso. 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: Built-in i ruoli determinano cosa possono fare gli utenti con progetti, cluster, repository e impostazioni Argo CD

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

Ciò significa che:

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

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

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

Esempio di flusso di lavoro:

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

  2. Un ADMIN 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 di VIEWER) possono ora visualizzare e gestire le applicazioni in quel progetto in base alle autorizzazioni relative ai ruoli del progetto

Per i dettagli sulla configurazione dei ruoli del progetto, consulta. Project-based controllo degli accessi

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:

{ "rbacRoleMappings": { "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 in maiuscolo (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 \ --role-arn "arn:aws:iam::111122223333:role/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 dei cluster e la configurazione dei repository.

Quando l'account amministratore è appropriato:

  • Configurazione e configurazione iniziali delle capacità

  • Sviluppo individuale o dimostrazioni rapide

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

Procedure consigliate per l'account amministratore:

  • Non utilizzare i token dell'account per il controllo della versione

  • 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 sul progetto:

  • Ambienti di sviluppo condivisi con più utenti

  • Qualsiasi ambiente che assomigli alla produzione

  • Quando hai bisogno di percorsi di controllo su chi ha eseguito le azioni

  • Quando è necessario applicare restrizioni relative alle 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

Project-based controllo degli accessi

Utilizzate 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 innanzitutto associarli 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 ai ruoli del progetto.

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

I progetti forniscono:

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

  • Restrizioni di destinazione: limita i cluster e i namespace che possono essere presi di mira

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

  • Integrazione RBAC: mappa i progetti ai gruppi AWS Identity Center o ai ruoli 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 namespace può contenere applicazioni o ApplicationSets che fa riferimento a questo progetto.

Importante

La funzionalità EKS Argo CD supporta solo un singolo namespace per le applicazioni e, in genere ApplicationSets, lo spazio dei nomi specificato durante la creazione della funzionalità. argocd Ciò è diverso dal CD Argo open source 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 si omette lo spazio dei nomi della funzionalità dasourceNamespaces, Applications o ApplicationSets in tale namespace non possono fare riferimento a questo progetto, con conseguenti errori di distribuzione.

Assegna utenti ai progetti:

I ruoli del progetto garantiscono agli utenti di EDITOR e VIEWER l'accesso alle risorse del progetto (applicazioni ApplicationSets, credenziali del repository e del cluster) e alle funzionalità (log, exec). Senza i 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

clusters, get, *, allowIncludi i ruoli del 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».

Comprendere le 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- Read-only accesso alle applicazioni

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

  • 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

Criteri di capacità:

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

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

Nota

Gli utenti di EDITOR possono creare ruoli di progetto per concedere a se stessi e agli altri 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 gli ID di gruppo di Identity Center (non i nomi dei gruppi) nel campo. groups Puoi anche utilizzare gli ID utente di Identity Center per l'accesso di singoli utenti. Trova questi ID nella console di AWS Identity Center o utilizzando l'interfaccia a riga di AWS comando.

Schemi di autorizzazione comuni

Schema 1: team amministrativo con accesso completo

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

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

Modello 2: i team leader gestiscono i progetti, gli sviluppatori accedono tramite i ruoli di progetto

{ "rbacRoleMappings": { "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 agli sviluppatori l'accesso alle risorse (applicazioni ApplicationSets, credenziali) e alle funzionalità (log, exec)

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

Schema 3: Team-based accesso con i ruoli del progetto

  1. ADMIN crea progetti e assegna ai responsabili dei team il 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. I membri del team hanno bisogno solo del ruolo globale di VIEWER: i ruoli del progetto forniscono l'accesso alle risorse e alle funzionalità del progetto

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

Best practice

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

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

Usa i progetti per l'isolamento del team: crea progetti 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 ai 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 di 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 del repository), allega le autorizzazioni IAM richieste al Capability Role.

Grafici ECR per 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" } ] }

Vedi Configurare l'accesso al repository per i dettagli sull'utilizzo di queste integrazioni.

Fasi successive