Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Hekk hu, wara r-rilaxx Hashicorp Consul 1.5.0 fil-bidu ta' Mejju 2019, f'Consul tista' tawtorizza applikazzjonijiet u servizzi li jaħdmu f'Kubernetes b'mod nattiv.

F'dan it-tutorja aħna noħolqu pass pass POC (Prova tal-kunċett, PoC) li turi din il-karatteristika ġdida. Inti mistenni li jkollok għarfien bażiku ta' Kubernetes u l-Konslu ta' Hashicorp. Filwaqt li tista' tuża kwalunkwe pjattaforma tal-cloud jew ambjent fuq il-post, f'dan it-tutorja se nużaw il-Pjattaforma tal-Cloud ta' Google.

Reviżjoni

Jekk immorru Dokumentazzjoni tal-konslu dwar il-metodu ta' awtorizzazzjoni tiegħu, aħna ser tingħata ħarsa ġenerali ta 'malajr ta' l-iskop tagħha u l-każ ta 'użu, kif ukoll xi dettalji tekniċi u ħarsa ġenerali ġenerali tal-loġika. Nirrakkomanda ħafna li taqrah mill-inqas darba qabel ma nipproċedi, peress li issa se nkun qed nispjegaha u tomgħodha kollha.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Dijagramma 1: Ħarsa ġenerali uffiċjali tal-metodu ta' awtorizzazzjoni tal-Konsli

Ejja nħarsu ġewwa dokumentazzjoni għal metodu speċifiku ta’ awtorizzazzjoni Kubernetes.

Żgur, hemm informazzjoni utli hemmhekk, iżda m'hemm l-ebda gwida dwar kif fil-fatt tużaha kollha. Allura, bħal kull persuna sensiela, inti tgħajjat ​​l-Internet għall-gwida. U mbagħad... Inti tonqos. Dan jiġri. Ejja nirranġaw dan.

Qabel ma ngħaddu għall-ħolqien tal-POC tagħna, ejja mmorru lura għall-ħarsa ġenerali tal-metodi ta 'awtorizzazzjoni tal-Konslu (Dijagramma 1) u rfinawh fil-kuntest ta' Kubernetes.

arkitettura

F'dan it-tutorja, se noħolqu server Konslu fuq magna separata li tikkomunika ma' cluster Kubernetes bil-klijent Konslu installat. Imbagħad se noħolqu l-applikazzjoni finta tagħna fil-pod u nużaw il-metodu ta 'awtorizzazzjoni konfigurat tagħna biex naqraw mill-maħżen taċ-ċavetta/valur tal-Konslu tagħna.

Id-dijagramma t'hawn taħt tagħti dettalji dwar l-arkitettura li qed noħolqu f'dan it-tutorja, kif ukoll il-loġika wara l-metodu ta 'awtorizzazzjoni, li se tiġi spjegata aktar tard.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Dijagramma 2: Ħarsa ġenerali tal-Metodu ta' Awtorizzazzjoni Kubernetes

Nota ta 'malajr: is-server tal-Konslu m'għandux għalfejn jgħix barra mill-cluster Kubernetes biex dan jaħdem. Imma iva, jista 'jagħmel dan il-mod u l-ieħor.

Allura, billi nieħdu d-dijagramma tal-ħarsa ġenerali tal-Konslu (Dijagramma 1) u napplikaw Kubernetes għaliha, niksbu d-dijagramma ta 'hawn fuq (Dijagramma 2), u l-loġika hawnhekk hija kif ġej:

  1. Kull pod se jkollu kont tas-servizz mehmuż miegħu li jkun fih token JWT iġġenerat u magħruf minn Kubernetes. Dan it-token jiddaħħal ukoll fil-pod b'mod awtomatiku.
  2. L-applikazzjoni jew is-servizz tagħna ġewwa l-pod jibda kmand tal-login lill-klijent Konslu tagħna. It-talba tal-login se tinkludi wkoll it-token u l-isem tagħna maħluqa apposta metodu ta' awtorizzazzjoni (tip Kubernetes). Dan il-pass #2 jikkorrispondi għall-pass 1 tad-dijagramma tal-Konslu (Skema 1).
  3. Il-klijent tal-Konslu tagħna mbagħad jgħaddi din it-talba lis-server tal-Konslu tagħna.
  4. MAGIKA! Dan huwa fejn is-server tal-Konslu jivverifika l-awtentiċità tat-talba, jiġbor informazzjoni dwar l-identità tat-talba u jqabbelha ma 'kwalunkwe regola assoċjata predefinita. Hawn taħt hemm dijagramma oħra biex turi dan. Dan il-pass jikkorrispondi għall-passi 3, 4 u 5 tad-dijagramma tal-ħarsa ġenerali tal-Konslu (Dijagramma 1).
  5. Is-server tal-Konslu tagħna jiġġenera token tal-Konslu b'permessi skont ir-regoli tal-metodu tal-awtorizzazzjoni speċifikati tagħna (li ddefinijna aħna) rigward l-identità ta' min jagħmel it-talba. Imbagħad jibgħat dak it-token lura. Dan jikkorrispondi mal-pass 6 tad-dijagramma tal-Konslu (Dijagramma 1).
  6. Il-klijent tal-Konslu tagħna jgħaddi t-token lill-applikazzjoni jew is-servizz li qed jagħmel it-talba.

L-applikazzjoni jew is-servizz tagħna issa jistgħu jużaw dan it-token tal-Konslu biex jikkomunikaw mad-dejta tal-Konslu tagħna, kif determinat mill-privileġġi tat-token.

Il-maġija hija żvelata!

Għal dawk minnkom li mhumiex kuntenti b'fenek biss minn kappell u jridu jkunu jafu kif jaħdem... ħallini "nurik kemm hu profond toqba tal-fenek".

Kif issemma qabel, il-pass "maġiku" tagħna (Figura 2: Pass 4) huwa fejn is-server tal-Konslu jawtentika t-talba, jiġbor informazzjoni dwar it-talba, u jqabbelha ma' kwalunkwe regola predefinita assoċjata. Dan il-pass jikkorrispondi għall-passi 3, 4 u 5 tad-dijagramma tal-ħarsa ġenerali tal-Konslu (Dijagramma 1). Hawn taħt hemm dijagramma (Dijagramma 3), li l-għan tagħha huwa li juri b'mod ċar dak li qed jiġri fil-fatt taħt il-barnuża metodu speċifiku ta’ awtorizzazzjoni Kubernetes.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Dijagramma 3: Il-maġija hija żvelata!

  1. Bħala punt tat-tluq, il-klijent Konslu tagħna jgħaddi t-talba tal-login lis-server tal-Konslu tagħna bit-token tal-kont Kubernetes u l-isem tal-istanza speċifika tal-metodu ta 'awtorizzazzjoni li nħoloq qabel. Dan il-pass jikkorrispondi għall-pass 3 fl-ispjegazzjoni taċ-ċirkwit preċedenti.
  2. Issa s-server tal-Konslu (jew il-mexxej) jeħtieġ li jivverifika l-awtentiċità tat-token riċevut. Għalhekk, se tikkonsulta l-cluster Kubernetes (permezz tal-klijent Konslu) u, bil-permessi xierqa, insibu jekk it-token huwiex ġenwin u ta' min jappartjeni.
  3. It-talba vvalidata mbagħad tiġi rritornata lill-mexxej tal-Konslu, u s-server tal-Konslu jfittex l-istanza tal-metodu ta 'awtorizzazzjoni bl-isem speċifikat mit-talba tal-login (u t-tip Kubernetes).
  4. Il-mexxej tal-konslu jiddetermina l-istanza tal-metodu ta’ awtorizzazzjoni speċifikata (jekk jinstab) u jaqra s-sett ta’ regoli vinkolanti li huma mehmuża magħha. Imbagħad jaqra dawn ir-regoli u jqabbelhom mal-attributi tal-identità verifikati.
  5. TA-dah! Ejja ngħaddu għall-pass 5 fl-ispjegazzjoni taċ-ċirkwit preċedenti.

Mexxi Consul-server fuq magna virtwali regolari

Minn issa 'l quddiem, l-aktar ser inkun qed nagħti struzzjonijiet dwar kif toħloq dan il-POC, ħafna drabi f'punti ta' bulit, mingħajr spjegazzjonijiet ta' sentenzi sħaħ. Ukoll, kif innutat qabel, se nuża GCP biex noħloq l-infrastruttura kollha, iżda tista 'toħloq l-istess infrastruttura kullimkien ieħor.

  • Ibda l-magna virtwali (istanza/server).

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

  • Oħloq regola għall-firewall (grupp tas-sigurtà fl-AWS):
  • Inħobb nassenja l-istess isem tal-magna kemm għar-regola kif ukoll għat-tikketta tan-netwerk, f'dan il-każ "skywiz-consul-server-poc".
  • Sib l-indirizz IP tal-kompjuter lokali tiegħek u żidu mal-lista tal-indirizzi IP tas-sors sabiex inkunu nistgħu naċċessaw l-interface tal-utent (UI).
  • Iftaħ il-port 8500 għall-UI. Ikklikkja Oħloq. Aħna se nerġgħu nbiddlu dan il-firewall dalwaqt [rabta].
  • Żid regola tal-firewall mal-istanza. Mur lura għad-dashboard tal-VM fuq Consul Server u żid "skywiz-consul-server-poc" fil-qasam tat-tikketti tan-netwerk. Ikklikkja Save.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

  • Installa Consul fuq magna virtwali, iċċekkja hawn. Ftakar li għandek bżonn il-verżjoni tal-Konslu ≥ 1.5 [link]
  • Ejja noħolqu node wieħed Konslu - il-konfigurazzjoni hija kif ġej.

groupadd --system consul
useradd -s /sbin/nologin --system -g consul consul
mkdir -p /var/lib/consul
chown -R consul:consul /var/lib/consul
chmod -R 775 /var/lib/consul
mkdir /etc/consul.d
chown -R consul:consul /etc/consul.d

  • Għal gwida aktar dettaljata dwar l-installazzjoni tal-Konsul u t-twaqqif ta 'grupp ta' 3 nodi, ara hawn.
  • Oħloq fajl /etc/consul.d/agent.json kif ġej [rabta]:

### /etc/consul.d/agent.json
{
 "acl" : {
 "enabled": true,
 "default_policy": "deny",
 "enable_token_persistence": true
 }
}

  • Ibda s-server tal-Konslu tagħna:

consul agent 
-server 
-ui 
-client 0.0.0.0 
-data-dir=/var/lib/consul 
-bootstrap-expect=1 
-config-dir=/etc/consul.d

  • Għandek tara mazz ta 'output u tispiċċa b'"... aġġornament imblukkat minn ACLs."
  • Sib l-indirizz IP estern tas-server Konslu u iftaħ browser b'dan l-indirizz IP fuq il-port 8500. Kun żgur li l-UI tiftaħ.
  • Ipprova żid par ċavetta/valur. Għandu jkun hemm żball. Dan għaliex għabbejna s-server tal-Konslu b'ACL u ddiżattivajna r-regoli kollha.
  • Mur lura għall-qoxra tiegħek fuq is-server tal-Konslu u ibda l-proċess fl-isfond jew b'xi mod ieħor biex tibda taħdem u daħħal dan li ġej:

consul acl bootstrap

  • Sib il-valur "SecretID" u lura għall-UI. Fit-tab ACL, daħħal l-ID sigrieta tat-token li għadek kif ikkuppjat. Ikkopja SecretID x'imkien ieħor, ikollna bżonnha aktar tard.
  • Issa żid par ċavetta/valur. Għal dan il-POC, żid dan li ġej: ċavetta: “custom-ns/test_key”, valur: “Jien fil-folder custom-ns!”

Tnedija ta 'cluster Kubernetes għall-applikazzjoni tagħna mal-klijent Consul bħala Daemonset

  • Oħloq cluster K8s (Kubernetes). Aħna ser noħolquha fl-istess żona bħas-server għal aċċess aktar mgħaġġel, u għalhekk nistgħu nużaw l-istess subnet biex nikkonnettjaw faċilment ma 'indirizzi IP interni. Aħna ser nsejħulu "skywiz-app-with-consul-client-poc".

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

  • Bħala nota tal-ġenb, hawn tutorja tajba li ltqajt magħha waqt li kont qed nistabbilixxi raggruppament tal-POC Consul ma’ Consul Connect.
  • Se nkunu qed nużaw ukoll it-tmun tat-tmun ta 'Hashicorp b'fajl ta' valuri estiż.
  • Installa u kkonfigurat Helm. Passi tal-konfigurazzjoni:

kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller-admin-binding 
   --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
./helm init --service-account=tiller
./helm update

### poc-helm-consul-values.yaml
global:
 enabled: false
 image: "consul:latest"
# Expose the Consul UI through this LoadBalancer
ui:
 enabled: false
# Allow Consul to inject the Connect proxy into Kubernetes containers
connectInject:
 enabled: false
# Configure a Consul client on Kubernetes nodes. GRPC listener is required for Connect.
client:
 enabled: true
 join: ["<PRIVATE_IP_CONSUL_SERVER>"]
 extraConfig: |
{
  "acl" : {
 "enabled": true,   
 "default_policy": "deny",   
 "enable_token_persistence": true 
  }
}
# Minimal Consul configuration. Not suitable for production.
server:
 enabled: false
# Sync Kubernetes and Consul services
syncCatalog:
 enabled: false

  • Applika chart tat-tmun:

./helm install -f poc-helm-consul-values.yaml ./consul-helm - name skywiz-app-with-consul-client-poc

  • Meta jipprova jaħdem, ikollu bżonn permessi għas-server tal-Konslu, allura ejja nżiduhom.
  • Innota l-"Pod Address Range" li tinsab fuq id-dashboard tal-cluster u irreferi għar-regola tagħna tal-firewall "skywiz-consul-server-poc".
  • Żid il-firxa tal-indirizzi għall-pod mal-lista tal-indirizzi IP u l-portijiet miftuħa 8301 u 8300.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

  • Mur fil-Konslu UI u wara ftit minuti tara l-cluster tagħna jidher fit-tab tan-nodi.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Konfigurazzjoni ta' Metodu ta' Awtorizzazzjoni billi Tintegra l-Konsul ma' Kubernetes

  • Irritorna lejn il-qoxra tas-server tal-Konsul u esporta t-token li ssejvjajt qabel:

export CONSUL_HTTP_TOKEN=<SecretID>

  • Ikollna bżonn informazzjoni mill-cluster Kubernetes tagħna biex noħolqu eżempju tal-metodu awth:
  • kubernetes-host

kubectl get endpoints | grep kubernetes

  • kubernetes-service-account-jwt

kubectl get sa <helm_deployment_name>-consul-client -o yaml | grep "- name:"
kubectl get secret <secret_name_from_prev_command> -o yaml | grep token:

  • It-token huwa kodifikat base64, għalhekk iddekriptah billi tuża l-għodda favorita tiegħek [rabta]
  • kubernetes-ca-cert

kubectl get secret <secret_name_from_prev_command> -o yaml | grep ca.crt:

  • Ħu ċ-ċertifikat "ca.crt" (wara d-dekodifikazzjoni base64) u ikteb fil-fajl "ca.crt".
  • Issa istanzija l-metodu ta 'awtentikazzjoni, billi tissostitwixxi l-placeholders bil-valuri li għadek kif irċevejt.

consul acl auth-method create 
-type "kubernetes" 
-name "auth-method-skywiz-consul-poc" 
-description "This is an auth method using kubernetes for the cluster skywiz-app-with-consul-client-poc" 
-kubernetes-host "<k8s_endpoint_retrieved earlier>" 
[email protected] 
-kubernetes-service-account-
jwt="<decoded_token_retrieved_earlier>"

  • Sussegwentement irridu noħolqu regola u nwaħħalha mar-rwol il-ġdid. Għal din il-parti tista 'tuża Consul UI, iżda aħna se nużaw il-linja tal-kmand.
  • Ikteb regola

### kv-custom-ns-policy.hcl
key_prefix "custom-ns/" {
 policy = "write"
}

  • Applika r-regola

consul acl policy create 
-name kv-custom-ns-policy 
-description "This is an example policy for kv at custom-ns/" 
-rules @kv-custom-ns-policy.hcl

  • Sib l-ID tar-regola li għadek kif ħoloq mill-output.
  • Oħloq rwol b'regola ġdida.

consul acl role create 
-name "custom-ns-role" 
-description "This is an example role for custom-ns namespace" 
-policy-id <policy_id>

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-ns-role' 
-selector='serviceaccount.namespace=="custom-ns"'

Fl-aħħar nett konfigurazzjonijiet

Drittijiet ta 'aċċess

  • Oħloq drittijiet ta' aċċess. Irridu nagħtu permess lill-Konslu biex jivverifika u jidentifika l-identità tat-token tal-kont tas-servizz K8s.
  • Ikteb dan li ġej fil-fajl [link]:

###skywiz-poc-consul-server_rbac.yaml
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: review-tokens
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: system:auth-delegator
 apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: service-account-getter
 namespace: default
rules:
- apiGroups: [""]
 resources: ["serviceaccounts"]
 verbs: ["get"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: get-service-accounts
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: service-account-getter
 apiGroup: rbac.authorization.k8s.io

  • Ejja noħolqu drittijiet ta' aċċess

kubectl create -f skywiz-poc-consul-server_rbac.yaml

Konnessjoni mal-Konslu Klijent

  • Kif innutat hawnHemm diversi għażliet għall-konnessjoni ma' daemonset, iżda ngħaddu għas-soluzzjoni sempliċi li ġejja:
  • Applika l-fajl li ġej [rabta].

### poc-consul-client-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
 name: consul-ds-client
spec:
 selector:
   app: consul
   chart: consul-helm
   component: client
   hasDNS: "true"
   release: skywiz-app-with-consul-client-poc
 ports:
 - protocol: TCP
   port: 80
   targetPort: 8500

  • Imbagħad uża l-kmand mibni li ġej biex toħloq configmap [rabta]. Jekk jogħġbok innota li qed nirreferu għall-isem tas-servizz tagħna, tibdilha jekk meħtieġ.

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
 labels:
   addonmanager.kubernetes.io/mode: EnsureExists
 name: kube-dns
 namespace: kube-system
data:
 stubDomains: |
   {"consul": ["$(kubectl get svc consul-ds-client -o jsonpath='{.spec.clusterIP}')"]}
EOF

Ittestjar tal-metodu awth

Issa ejja naraw il-maġija fl-azzjoni!

  • Oħloq diversi folders ewlenin oħra bl-istess ċavetta tal-ogħla livell (i.e. /sample_key) u valur tal-għażla tiegħek. Oħloq politiki u rwoli xierqa għal mogħdijiet ewlenin ġodda. Nagħmlu l-irbit aktar tard.

Introduzzjoni għall-Awtorizzazzjoni Kubernetes ta' Hashicorp Consul

Test tal-ispazju tal-isem personalizzat:

  • Ejja noħolqu l-ispazju tal-isem tagħna stess:

kubectl create namespace custom-ns

  • Ejja noħolqu pod fl-ispazju tal-isem il-ġdid tagħna. Ikteb il-konfigurazzjoni għall-pod.

###poc-ubuntu-custom-ns.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-ns
 namespace: custom-ns
spec:
 containers:
 - name: poc-ubuntu-custom-ns
   image: ubuntu
   command: ["/bin/bash", "-ec", "sleep infinity"]
 restartPolicy: Never

  • Oħloq taħt:

kubectl create -f poc-ubuntu-custom-ns.yaml

  • Ladarba l-kontenitur ikun qed jaħdem, mur hemm u installa curl.

kubectl exec poc-ubuntu-custom-ns -n custom-ns -it /bin/bash
apt-get update && apt-get install curl -y

  • Issa se nibagħtu talba ta' login lill-Konslu billi tuża l-metodu ta' awtorizzazzjoni li ħloqna qabel [rabta].
  • Biex tara t-token imdaħħal mill-kont tas-servizz tiegħek:

cat /run/secrets/kubernetes.io/serviceaccount/token

  • Ikteb dan li ġej f'fajl ġewwa l-kontenitur:

### payload.json
{
 "AuthMethod": "auth-method-test",
 "BearerToken": "<jwt_token>"
}

  • Idħol!

curl 
--request POST 
--data @payload.json 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • Biex tlesti l-passi ta 'hawn fuq f'linja waħda (peress li ser inwettqu testijiet multipli), tista' tagħmel dan li ġej:

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • Xogħlijiet! Mill-inqas għandu. Issa ħu l-SecretID u pprova taċċessa ċ-ċavetta/valur li għandu jkollna aċċess għaliha.

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-ns/test_key --header “X-Consul-Token: <SecretID_from_prev_response>”

  • Tista 'tibbaża64 jiddekowdja "Valur" u tara li jaqbel mal-valur f'custom-ns/test_key fl-UI. Jekk użajt l-istess valur hawn fuq f'dan it-tutorja, il-valur kodifikat tiegħek ikun IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi.

Test tal-kont tas-servizz tal-utent:

  • Oħloq ServiceAccount tad-dwana billi tuża l-kmand li ġej [rabta].

kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
 name: custom-sa
EOF

  • Oħloq fajl ta 'konfigurazzjoni ġdid għall-pod. Jekk jogħġbok innota li inkludejt installazzjoni curl biex tiffranka x-xogħol :)

###poc-ubuntu-custom-sa.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-sa
 namespace: default
spec:
 serviceAccountName: custom-sa
 containers:
 - name: poc-ubuntu-custom-sa
   image: ubuntu
   command: ["/bin/bash","-ec"]
   args: ["apt-get update && apt-get install curl -y; sleep infinity"]
 restartPolicy: Never

  • Wara dan, mexxi qoxra ġewwa l-kontenitur.

kubectl exec -it poc-ubuntu-custom-sa /bin/bash

  • Idħol!

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • Permess miċħud. Oh, insejt inżidu regoli ġodda li jorbtu bil-permessi xierqa, ejja nagħmlu dan issa.

Irrepeti l-passi preċedenti hawn fuq:
a) Oħloq Politika identika għall-prefiss “custom-sa/”.
b) Oħloq Rwol, sejjaħlu “custom-sa-role”
c) Waħħal il-Politika mar-Rwol.

  • Oħloq Rule-Binding (possibbli biss minn cli/api). Innota t-tifsira differenti tal-bandiera tas-selettur.

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-sa-role' 
-selector='serviceaccount.name=="custom-sa"'

  • Erġa' illoggja mill-kontenitur "poc-ubuntu-custom-sa". Suċċess!
  • Iċċekkja l-aċċess tagħna għat-triq custom-sa/key.

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-sa/test_key --header “X-Consul-Token: <SecretID>”

  • Tista' wkoll tiżgura li dan it-token ma jagħtix aċċess għal kv f'"custom-ns/". Irrepeti biss il-kmand ta 'hawn fuq wara li tissostitwixxi "custom-sa" bil-prefiss "custom-ns".
    Permess miċħud.

Eżempju ta' overlay:

  • Ta 'min jinnota li l-mappings kollha li jorbtu r-regoli se jiżdiedu mat-token b'dawn id-drittijiet.
  • Il-kontenitur tagħna "poc-ubuntu-custom-sa" jinsab fl-ispazju tal-isem default - allura ejja nużawh għal rbit differenti tar-regoli.
  • Irrepeti l-passi preċedenti:
    a) Oħloq Politika identika għall-prefiss ewlieni “default/”.
    b) Oħloq Rwol, isimha "default-ns-role"
    c) Waħħal il-Politika mar-Rwol.
  • Oħloq Irbit ta' Regola (possibbli biss minn cli/api)

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='default-ns-role' 
-selector='serviceaccount.namespace=="default"'

  • Mur lura għall-kontenitur "poc-ubuntu-custom-sa" tagħna u pprova jaċċessa l-mogħdija kv "default/".
  • Permess miċħud.
    Tista' tara l-kredenzjali speċifikati għal kull token fl-UI taħt ACL > Tokens. Kif tistgħu taraw, it-token attwali tagħna għandu biss "custom-sa-role" wieħed imwaħħal miegħu. It-token li qed nużaw bħalissa ġie ġġenerat meta dħalna u kien hemm rbit wieħed biss ta' regola li qabbel dak iż-żmien. Għandna bżonn nerġgħu nilloggjaw u nużaw it-token il-ġdid.
  • Kun żgur li tista 'taqra kemm mill-mogħdijiet kv "custom-sa/" kif ukoll "default/".
    Success!
    Dan għaliex il-“poc-ubuntu-custom-sa” tagħna jaqbel mar-rabta tar-regoli “custom-sa” u “default-ns”.

Konklużjoni

TTL token mgmt?

Fiż-żmien ta 'din il-kitba, m'hemm l-ebda mod integrat biex jiġi ddeterminat it-TTL għal tokens iġġenerati minn dan il-metodu ta' awtorizzazzjoni. Tkun opportunità meraviljuża li tipprovdi awtomazzjoni sigura tal-awtorizzazzjoni tal-Konslu.

Hemm għażla biex toħloq token manwalment bit-TTL:

Nisperaw li fil-futur qarib inkunu nistgħu nikkontrollaw kif jiġu ġġenerati t-tokens (għal kull regola jew metodu ta 'awtorizzazzjoni) u nżidu TTL.

Sa dakinhar, huwa ssuġġerit li tuża endpoint tal-logout fil-loġika tiegħek.

Aqra wkoll artikli oħra fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment