OpenID
gcp

Cloud IAPで設定された認証をGCPのサービスアカウントで認証を通す方法

公式ドキュメント

OpenID Connect(OIDC)トークンを使用して、Cloud IAP で保護されたリソースに対してサービス アカウントを認証します。

    1. Cloud IAP で保護されたプロジェクトのアクセスリストにサービス アカウントを追加します。
    2. JWT ベースのアクセス トークン(JWT-bAT)を生成します。
    3. Cloud IAP で保護されたクライアント ID の OIDC トークンをリクエストします。
        クライアント ID を見つけるには、次の手順を行います。
            [Cloud IAP] ページに移動します。
            アクセスするリソースを見つけて、右側の [さらに表示] > [OAuth クライアント] をクリックします。
            表示される [認証情報] ページで、クライアント ID をメモします。
    4. Authorization: Bearer ヘッダーに OIDC トークンを追加して、Cloud IAP で保護されたリソースへの認証済みリクエストを作成します。

このドキュメントを見て分からなかった人向け
ちなみに僕は全くわからなかった

解決方法はGoogleさんが参考に作成してくれている、プログラムを利用する
少し改造したのが コチラ

前準備

GCPのサービスアカウントをexportしておく。
export GOOGLE_APPLICATION_CREDENTIALS=$HOME'/.credentials/xxxxxxxxxxxxxxxx.json'

プログラムを実行

  1. fork repo こちらからプロジェクトをclone
  2. iap/に移動
  3. 外部ライブラリーをインストール $ virtualenv/bin/pip install -r requirements.txt
  4. コマンド実行 $ python iap_get_oidc.py
  5. 結果が表示されるので $ curl http://xxx.com -H "Authorization:Bearer xxxxxxxxx で動作確認