IAP
Identity-Awara Proxy
めちゃめちゃ使ってるのにページなかった
idToken の検証
Python
デフォルトで証明書は都度再取得される
audience 無いときは検証しない
TCP
VM にトンネリングする(使ったこと無い)
再度ログインさせたい
便利クエリパラメータがある
?gcp-iap-mode=CLEAR_LOGIN_COOKIE
他にも
?gcp-iap-mode=GCIP_SIGNOUT
?gcp-iap-mode=DO_SESSION_REFRESH
?gcp-iap-mode=AUTHENTICATING 普通使うことはないかな?
?gcp-iap-mode=FORCE_LOGIN
すべてのユーザに閲覧を許可しつつログインしてほしいとき
IAP 設定 with Terraform
google_iap_client は外部のものを作れないので以下のフローでやる
手で OAuth2 同意画面を作る
手で OAuth 2.0 クライアント ID を作る
ウェブ アプリケーション
承認済みのリダイレクト URI は
https://iap.googleapis.com/v1/oauth/clientIds/{クライアントID}:handleRedirect
code:iap.tf
data "google_secret_manager_secret_version" "iap_client_id" {
secret = "iap_client_id"
}
data "google_secret_manager_secret_version" "iap_client_secret" {
secret = "iap_client_secret"
}
resource "google_compute_backend_service" "sample" {
...
iap {
enabled = true
oauth2_client_id = data.google_secret_manager_secret_version.iap_client_id.secret_data
oauth2_client_secret = data.google_secret_manager_secret_version.iap_client_secret.secret_data
}
}
Cloud Run の Invoker
IAP のために未認証を許可しなくてもいい
code:invoker.tf
resource "google_project_iam_member" "iap_run_invoker" {
project = var.project
member = "serviceAccount:service-${data.google_project.this.number}@gcp-sa-iap.iam.gserviceaccount.com"
role = "roles/run.invoker"
}
もしこの SA が居なければ CLI から作る(ムズ!!)
$ gcloud beta services identity create --service=iap.googleapis.com