GKEからのGCPへの認証をまとめる

GKE cluster作成時にも指定できるアクセススコープはレガシー扱いになっている https://cloud.google.com/kubernetes-engine/docs/how-to/access-scopes#what_are_access_scopes とはいえチュートリアルには--scopeを利用したものも見受けられる https://agones.dev/site/docs/installation/creating-cluster/gke/ アクセススコープは手軽だが細かい設定ができない。ServiceAccountを使うと必要最低限の権限のみ付与する事ができるので、セキュリティの品質が保たれるためGoogleとしてはServiceAccountを推している。という認識でいいのかな. GKEの権限関係で迷わないよう、サービス アカウントを使用した Google Cloud への認証を題材にやり方を整理する アクセススコープを用いた認証 ServiceAccountを用いた認証 (おまけ) ServiceAccount認証にWorkload Identityを用いる 事前準備 題材に則りpubsub topicを作成し、publishとsubscribeができるか検証する pubsub topicの作成 gcloud pubsub topics create echo gcloud pubsub subscriptions create echo-read --topic=echo ソースコード取得 git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples cloud-pubsub/deployment以下のyamlファイルを実際に適応していく 1. アクセススコープを用いた認証 クラスタ作成 gcloud container clusters create pubsub-test --scopes=gke-default,https://www.googleapis.com/auth/pubsub --zone asia-northeast1-a scope オプションについて --scopesオプションをつけることでクラスタに権限を付与できる gke-defaultは下記のscopeをまとめたエイリアスになる Alias URI gke-default https://www.googleapis.com/auth/devstorage.read_only https://www.googleapis.com/auth/logging.write https://www.googleapis.com/auth/monitoring https://www.googleapis.com/auth/service.management.readonly https://www.googleapis.com/auth/servicecontrol https://www.googleapis.com/auth/trace.append gcloud container clusters create --helpをすると他のエイリアスもあるのでみてみると良い (webのmanにも載っている) また複数指定したいのでカンマ区切りで指定している scopeの一覧から選んで付与していく. (権限を追加する) 後から権限を追加したくなるケースはどうするか? scopeを変えたいならば、node-poolsを作り変える事しかできない # 新規作成 gcloud container node-pools create new-pools --cluster pubsub-test --scopes=gke-default,https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/something # 古いnodeを削除 gcloud container node-pools delete old-pools --cluster pubsub-test デプロイ kubectl apply -f cloud-pubsub/deployment/pubsub.yaml kubectl get po NAME READY STATUS RESTARTS AGE pubsub-8cb8475c8-tvxwv 1/1 Running 0 95s 確認 Publish gcloud pubsub topics publish echo --message="Hello, world\!" messageIds: - '3909513331830980' Subscribe kubectl logs -f pubsub-8cb8475c8-tvxwv Pulling messages from Pub/Sub subscription... [2022-03-21 06:37:27.265195] Received message: ID=3909513331830980 Data=b'Hello, world!' [2022-03-21 06:37:27.265294] Processing: 3909513331830980 [2022-03-21 06:37:30.267957] Processed: 3909513331830980 2. ServiceAccountを用いた認証 Googleが推奨しているのはこちら サービス アカウントを使用した Google Cloud への認証と同じ事をしているだけなので説明は省く ...

March 21, 2022 · 3 min · motoki yoan