Cloud RunのIAMでの認証を試してみたところ、驚くほど簡単でした
個人用のAPIサーバなど構築するときに便利そうなので備忘録です
Cloud Runでサービスを作成する
とりあえずアクセスしてみる
とりあえずアクセスしてみます
ちゃんと認証が必要
の設定が効いてるみたいです
権限を付与する
再度アクセスしてみる
とりあえず正常応答が返るかどうかしか気にしてないので、curlでやります
- Cloud Shellを起動します(右上のターミナルアイコン)
現在のログインアカウントとプロジェクトが設定された状態でTerminalが起動します(めちゃ便利) - Cloud Shellで以下のコマンドでログインアカウントのIDトークンを取得します(ダイアログが表示されたら
承認
を選択)$ gcloud auth print-identity-token
- 取得したトークンを使って、サービスにアクセスします
$ curl {YOUR_SERVICE_URL} -H 'Authorization: Bearer {token}'
- 先ほどはForbiddenでしたが、今回は200でHTMLが返ってきているはずです
めっちゃ簡単ですね
一応、権限付与していないGoogleアカウントでも試してみる
付与した権限を削除するか、別のgoogleアカウントのIDトークンで同じcurl文を実行してください
$ curl ~以下省略~
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Your client does not have permission to get URL <code>/</code> from this server.</h2>
<h2></h2>
</body></html>
403になりました。大丈夫そうです
あとはサービスを削除して終了です
以上です!