Hashicorp Consul の Kubernetes 認蚌の抂芁

Hashicorp Consul の Kubernetes 認蚌の抂芁

そうなんです、リリヌス埌は ハシコヌプコンスル 1.5.0 2019 幎 XNUMX 月初旬、Consul では、Kubernetes でネむティブに実行されるアプリケヌションずサヌビスを承認できるようになりたした。

このチュヌトリアルでは、段階的に䜜成しおいきたす POC (抂念実蚌、PoC) この新機胜をデモンストレヌションしたす。Kubernetes ず Hashicorp の Consul に関する基本的な知識があるこずが期埅されたす。任意のクラりド プラットフォヌムたたはオンプレミス環境を䜿甚できたすが、このチュヌトリアルでは Google の Cloud Platform を䜿甚したす。

ОбзПр

行ったら 承認方法に関する領事通のドキュメントでは、その目的ず䜿甚䟋、技術的な詳现、ロゞックの抂芁に぀いお簡単に説明したす。 これからすべおを説明しお理解するので、先に進む前に少なくずも䞀床は読むこずを匷くお勧めしたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

図 1: 領事認蚌方法の公匏抂芁

芗いおみたしょう 特定の Kubernetes 認蚌方法に関するドキュメント.

確かに、圹立぀情報はありたすが、それを実際に䜿甚する方法に関するガむドはありたせん。 したがっお、正気の人なら誰でも同じように、むンタヌネットで指針を探したす。 そしお...倱敗したす。 それは起こりたす。 これを修正したしょう。

POC の䜜成に進む前に、Consul の認蚌方法の抂芁 (図 1) に戻り、Kubernetes のコンテキストで掗緎させおみたしょう。

アヌキテクチャ

このチュヌトリアルでは、Consul クラむアントがむンストヌルされおいる Kubernetes クラスタヌず通信する別のマシンに Consul サヌバヌを䜜成したす。 次に、ポッド内にダミヌ アプリケヌションを䜜成し、構成された認蚌メ゜ッドを䜿甚しお Consul キヌ/倀ストアから読み取りたす。

以䞋の図は、このチュヌトリアルで䜜成しおいるアヌキテクチャず、埌で説明する認蚌方法の背埌にあるロゞックを詳しく瀺しおいたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

図 2: Kubernetes 認蚌方法の抂芁

簡単なメモ: これが機胜するために、Consul サヌバヌが Kubernetes クラスタヌの倖に存圚する必芁はありたせん。 しかし、はい、圌はあんなこずもあんなこずもできるのです。

したがっお、Consul の抂芁図 (図 1) に Kubernetes を適甚するず、䞊の図 (図 2) が埗られたす。ここでのロゞックは次のずおりです。

  1. 各ポッドには、生成されお Kubernetes によっお認識される JWT トヌクンを含むサヌビス アカりントがアタッチされたす。 このトヌクンはデフォルトでポッドにも挿入されたす。
  2. ポッド内のアプリケヌションたたはサヌビスは、Consul クラむアントぞのログむン コマンドを開始したす。 ログむンリク゚ストにはトヌクンず名前も含たれたす 特別に䜜られた 認蚌方匏Kubernetesタむプ。 このステップ #2 は、Consul ダむアグラム (スキヌム 1) のステップ 1 に察応したす。
  3. Consul クラむアントは、このリク゚ストを Consul サヌバヌに転送したす。
  4. 魔法 ここで、Consul サヌバヌはリク゚ストの信頌性を怜蚌し、リク゚ストの ID に関する情報を収集し、それを関連する事前定矩されたルヌルず比范したす。 以䞋はこれを説明する別の図です。 このステップは、Consul の抂芁図 (図 3) のステップ 4、5、および 1 に察応したす。
  5. Consul サヌバヌは、芁求者の ID に関しお指定された認可方法ルヌル (定矩枈み) に埓った暩限を持぀ Consul トヌクンを生成したす。 その埌、そのトヌクンが送り返されたす。 これは、Consul の図 (図 6) のステップ 1 に察応したす。
  6. Consul クラむアントは、芁求元のアプリケヌションたたはサヌビスにトヌクンを転送したす。

これで、アプリケヌションたたはサヌビスは、トヌクンの暩限によっお決定されるように、この Consul トヌクンを䜿甚しお Consul デヌタず通信できるようになりたす。

魔法が明かされる

垜子からりサギが出おきただけでは満足できず、それがどのように機胜するかを知りたい人のために...「その奥深さを教えおください」 りサギの巣穎'。

前述したように、「魔法の」ステップ (図 2: ステップ 4) では、Consul サヌバヌがリク゚ストを認蚌し、リク゚ストに関する情報を収集し、関連する事前定矩されたルヌルず比范したす。 このステップは、Consul の抂芁図 (図 3) のステップ 4、5、および 1 に察応したす。 以䞋の図 (図 3) は、実際に䜕が起こっおいるかを明確に瀺すこずを目的ずしおいたす。 フヌドの䞋 特定の Kubernetes 認蚌方法。

Hashicorp Consul の Kubernetes 認蚌の抂芁

図 3: 魔法が明らかになりたす。

  1. たず、Consul クラむアントは、Kubernetes アカりント トヌクンず、前に䜜成した認蚌メ゜ッドの特定のむンスタンス名を䜿甚しお、ログむン リク゚ストを Consul サヌバヌに転送したす。 このステップは、前の回路説明のステップ 3 に察応したす。
  2. ここで、Consul サヌバヌ (たたはリヌダヌ) は、受信したトヌクンの信頌性を怜蚌する必芁がありたす。 したがっお、(Consul クラむアント経由で) Kubernetes クラスタヌを参照し、適切な暩限を䜿甚しお、トヌクンが本物かどうか、およびトヌクンが誰に属しおいるかを調べたす。
  3. 怜蚌されたリク゚ストは Consul リヌダヌに返され、Consul サヌバヌはログむン リク゚スト (および Kubernetes タむプ) から指定された名前の認可メ゜ッド むンスタンスを怜玢したす。
  4. 領事リヌダヌは、指定された承認メ゜ッド むンスタンス (芋぀かった堎合) を識別し、それに付加されおいるバむンディング ルヌルのセットを読み取りたす。 次に、これらのルヌルを読み取り、怜蚌枈みの ID 属性ず比范したす。
  5. た、だヌ 先ほどの回路説明のステップ5に進みたす。

通垞の仮想マシン䞊で Consul-server を実行する

これからは、この POC の䜜成方法に぀いお、党文の説明はせずに、倚くの堎合箇条曞きで説明したす。 たた、前述したように、すべおのむンフラストラクチャの䜜成に GCP を䜿甚したすが、同じむンフラストラクチャを他の堎所に䜜成するこずもできたす。

  • 仮想マシン (むンスタンス/サヌバヌ) を起動したす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

  • ファむアりォヌルのルヌル (AWS のセキュリティ グルヌプ) を䜜成したす。
  • 私はルヌルずネットワヌク タグの䞡方に同じマシン名を割り圓おるこずを奜みたす。この堎合は「skywiz-consul-server-poc」です。
  • ロヌカル コンピュヌタヌの IP アドレスを芋぀けお送信元 IP アドレスのリストに远加するず、ナヌザヌ むンタヌフェむス (UI) にアクセスできるようになりたす。
  • UI 甚にポヌト 8500 を開きたす。 「䜜成」をクリックしたす。 このファむアりォヌルは近々たた倉曎する予定です [リンク].
  • ファむアりォヌル ルヌルをむンスタンスに远加したす。 Consul Server の VM ダッシュボヌドに戻り、ネットワヌク タグ フィヌルドに「skywiz-consul-server-poc」を远加したす。 「保存」をクリックしたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

  • Consul を仮想マシンにむンストヌルしたす。ここを確認しおください。 Consul バヌゞョン 1.5 以䞊が必芁であるこずに泚意しおください [リンク]
  • 単䞀ノヌドの Consul を䜜成したしょう - 構成は次のずおりです。

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

  • Consul のむンストヌルず 3 ノヌドのクラスタヌのセットアップに関する詳现なガむドに぀いおは、次を参照しおください。 ここで.
  • 次のようにファむル /etc/consul.d/agent.json を䜜成したす [リンク]:

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

  • Consul サヌバヌを起動したす。

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

  • 倧量の出力が衚瀺され、最埌に「...曎新が ACL によっおブロックされたした。」ずいうメッセヌゞが衚瀺されるはずです。
  • Consul サヌバヌの倖郚 IP アドレスを芋぀けお、ポヌト 8500 でこの IP アドレスを䜿甚しおブラりザを開きたす。UI が開くこずを確認したす。
  • キヌず倀のペアを远加しおみおください。 絶察間違っおたす。 これは、Consul サヌバヌに ACL をロヌドし、すべおのルヌルを無効にしたためです。
  • Consul サヌバヌ䞊のシェルに戻り、バックグラりンドでプロセスを開始するか、他の方法でプロセスを実行し、次のように入力したす。

consul acl bootstrap

  • 「SecretID」倀を芋぀けお、UI に戻りたす。 [ACL] タブに、コピヌしたトヌクンのシヌクレット ID を入力したす。 SecretID を別の堎所にコピヌしたす。埌で必芁になりたす。
  • 次に、キヌず倀のペアを远加したす。 この POC では、次を远加したす: キヌ: 「custom-ns/test_key」、倀: 「I'm in thecustom-ns フォルダヌ!」

Consul クラむアントを Daemonset ずしお䜿甚しおアプリケヌションの Kubernetes クラスタヌを起動する

  • K8s (Kubernetes) クラスタヌを䜜成したす。 アクセスを高速化するためにサヌバヌず同じゟヌンに䜜成するので、同じサブネットを䜿甚しお内郚 IP アドレスに簡単に接続できたす。 これを「skywiz-app-with-consul-client-poc」ず呌びたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

  • 䜙談ですが、Consul Connect を䜿甚しお POC Consul クラスタヌをセットアップしおいるずきに芋぀けた優れたチュヌトリアルを次に瀺したす。
  • たた、拡匵倀ファむルを含む Hashicorp ヘルム チャヌトも䜿甚したす。
  • Helm をむンストヌルしお構成したす。 蚭定手順:

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

  • ヘルムチャヌト: https://www.consul.io/docs/platform/k8s/helm.html
  • 次の倀ファむルを䜿甚したす (ほずんどを無効にしおいるこずに泚意しおください)。

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

  • ヘルム チャヌトを適甚したす。

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

  • 実行しようずするず、Consul サヌバヌに察する暩限が必芁になるので、远加したしょう。
  • クラスタヌ ダッシュボヌドにある「ポッド アドレス範囲」に泚目し、「skywiz-consul-server-poc」ファむアりォヌル ルヌルを参照しおください。
  • ポッドのアドレス範囲を IP アドレスのリストに远加し、ポヌト 8301 および 8300 を開きたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

  • Consul UI に移動するず、数分埌にノヌド タブにクラスタヌが衚瀺されるこずがわかりたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

Consul ず Kubernetes の統合による認蚌方法の構成

  • Consul サヌバヌ シェルに戻り、前に保存したトヌクンを゚クスポヌトしたす。

export CONSUL_HTTP_TOKEN=<SecretID>

  • 認蚌メ゜ッドのむンスタンスを䜜成するには、Kubernetes クラスタヌからの情報が必芁です。
  • kubernetes-ホスト

kubectl get endpoints | grep kubernetes

  • kubernetes-サヌビス-アカりント-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:

  • トヌクンは Base64 で゚ンコヌドされおいるため、お気に入りのツヌルを䜿甚しお埩号化したす [リンク]
  • kubernetes-ca-cert

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

  • 「ca.crt」蚌明曞 (base64 デコヌド埌) を取埗し、それを「ca.crt」ファむルに曞き蟌みたす。
  • 次に、プレヌスホルダヌを受け取った倀に眮き換えお、認蚌メ゜ッドをむンスタンス化したす。

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

  • 次に、ルヌルを䜜成し、新しいロヌルにアタッチする必芁がありたす。 この郚分では Consul UI を䜿甚できたすが、ここではコマンド ラむンを䜿甚したす。
  • ルヌルを曞く

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

  • ルヌルを適甚する

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

  • 出力から䜜成したばかりのルヌルの ID を芋぀けたす。
  • 新しいルヌルを䜿甚しおロヌルを䜜成したす。

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

  • 次に、新しいロヌルを認蚌メ゜ッドのむンスタンスに関連付けたす。 「セレクタヌ」フラグによっお、ログむン芁求がこのロヌルを受け取るかどうかが決定されるこずに泚意しおください。 他のセレクタヌ オプションに぀いおは、ここを確認しおください。 https://www.consul.io/docs/acl/auth-methods/kubernetes.html#trusted-identity-attributes

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

最埌に蚭定

アクセス暩

  • アクセス暩を䜜成したす。 K8s サヌビス アカりント トヌクンの ID を確認しお識別する蚱可を Consul に䞎える必芁がありたす。
  • ファむルに次の内容を曞き蟌みたす [リンク]:

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

  • アクセス暩を䜜成したしょう

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

Consul クラむアントに接続する

  • 述べたように ここでdaemonset に接続するにはいく぀かのオプションがありたすが、次の簡単な解決策に進みたす。
  • 次のファむルを適甚したす [リンク].

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

  • 次に、次の組み蟌みコマンドを䜿甚しお configmap を䜜成したす [リンク]。 サヌビス名を参照しおいるこずに泚意しおください。必芁に応じお眮き換えおください。

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

認蚌方法のテスト

では、実際の魔法の動䜜を芋おみたしょう。

  • 同じトップレベルのキヌを持぀さらにいく぀かのキヌ フォルダヌを䜜成したす (぀たり、 /sample_key) ず遞択した倀。 新しいキヌ パスに適切なポリシヌずロヌルを䜜成したす。 バむンディングは埌でやりたす。

Hashicorp Consul の Kubernetes 認蚌の抂芁

カスタム名前空間テスト:

  • 独自の名前空間を䜜成したしょう。

kubectl create namespace custom-ns

  • 新しい名前空間にポッドを䜜成したしょう。 ポッドの構成を曞き蟌みたす。

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

  • 以䞋の䞋に䜜成したす:

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

  • コンテナヌが実行されたら、そこに移動しおcurlをむンストヌルしたす。

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

  • ここで、前に䜜成した認蚌メ゜ッドを䜿甚しおログむンリク゚ストを Consul に送信したす [リンク].
  • サヌビス アカりントから入力されたトヌクンを衚瀺するには:

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

  • コンテナ内のファむルに次の内容を曞き蟌みたす。

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

  • ログむンする

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

  • (耇数のテストを実行するため) 䞊蚘の手順を XNUMX 行で完了するには、次の手順を実行したす。

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

  • 効く 少なくずもそうすべきです。 次に、SecretID を取埗し、アクセスする必芁があるキヌ/倀にアクセスしおみたす。

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

  • 「Value」を Base64 デコヌドしお、それが UI のcustom-ns/test_key の倀ず䞀臎するこずを確認できたす。 このチュヌトリアルで䞊蚘ず同じ倀を䜿甚した堎合、゚ンコヌドされた倀は IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi になりたす。

ナヌザヌ サヌビス アカりントのテスト:

  • 次のコマンドを䜿甚しおカスタム ServiceAccount を䜜成したす。リンク].

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

  • ポッドの新しい構成ファむルを䜜成したす。 劎力を節玄するためにカヌルのむンストヌルを含めたこずに泚意しおください:)

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

  • その埌、コンテナ内でシェルを実行したす。

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

  • ログむンする

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

  • 蚱可が拒吊されたした。 ああ、適切な暩限をバむンディングする新しいルヌルを远加するのを忘れおいたした。ここで远加したしょう。

䞊蚘の手順を繰り返したす。
a) プレフィックス「custom-sa/」に察しお同䞀のポリシヌを䜜成したす。
b) ロヌルを䜜成し、「custom-sa-role」ず名付けたす。
c) ポリシヌをロヌルにアタッチしたす。

  • ルヌル バむンディングを䜜成したす (cli/api からのみ可胜)。 セレクタヌ フラグの意味が異なるこずに泚意しおください。

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

  • 「poc-ubuntu-custom-sa」コンテナから再床ログむンしたす。 成功
  • Custom-sa/key パスぞのアクセスを確認しおください。

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

  • このトヌクンが「custom-ns/」の kv ぞのアクセスを蚱可しないようにするこずもできたす。 「custom-sa」をプレフィックス「custom-ns」に眮き換えお、䞊蚘のコマンドを繰り返すだけです。
    アクセス拒吊。

オヌバヌレむの䟋:

  • すべおのルヌル バむンディング マッピングがこれらの暩限を持぀トヌクンに远加されるこずに泚意しおください。
  • コンテナヌ「poc-ubuntu-custom-sa」はデフォルトの名前空間にあるので、それを別のルヌル バむンディングに䜿甚したしょう。
  • 前の手順を繰り返したす。
    a) 「default/」キヌプレフィックスに察しお同䞀のポリシヌを䜜成したす。
    b) ロヌルを䜜成し、「default-ns-role」ずいう名前を付けたす。
    c) ポリシヌをロヌルにアタッチしたす。
  • ルヌルバむンディングの䜜成 (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"'

  • 「poc-ubuntu-custom-sa」コンテナに戻り、「default/」kv パスにアクセスしおみたす。
  • アクセス拒吊。
    各トヌクンに指定された認蚌情報は、UI の [ACL] > [トヌクン] で確認できたす。 ご芧のずおり、珟圚のトヌクンには「custom-sa-role」が XNUMX ぀だけアタッチされおいたす。 珟圚䜿甚しおいるトヌクンはログむン時に生成され、その時点で䞀臎するルヌル バむンディングは XNUMX ぀だけでした。 再床ログむンしお新しいトヌクンを䜿甚する必芁がありたす。
  • 「custom-sa/」ず「default/」の䞡方の KV パスから読み取れるこずを確認しおください。
    成功
    これは、「poc-ubuntu-custom-sa」が「custom-sa」および「default-ns」ルヌル バむンディングず䞀臎するためです。

たずめ

TTLトヌクン管理?

この蚘事の執筆時点では、この認可方法によっお生成されたトヌクンの TTL を決定する統合された方法はありたせん。 領事認蚌の安党な自動化を提䟛する玠晎らしい機䌚ずなるでしょう。

TTL を䜿甚しおトヌクンを手動で䜜成するオプションがありたす。

近い将来、トヌクンの生成方法を (ルヌルたたは認可方法ごずに) 制埡し、TTL を远加できるようになるこずを願っおいたす。

それたでは、ロゞックでログアりト ゚ンドポむントを䜿甚するこずをお勧めしたす。

私たちのブログの他の蚘事もお読みください。

出所 habr.com

コメントを远加したす