LoginSignup
3
0

【10分で試す】Cloud RunのIAM認証

Posted at

Cloud RunのIAMでの認証を試してみたところ、驚くほど簡単でした
個人用のAPIサーバなど構築するときに便利そうなので備忘録です

Cloud Runでサービスを作成する

  1. Google Cloud ConsoleのCloud Runの画面からサービスを作成します
    image.png
  2. サンプルのイメージを使ってサクッと起動までやります
    • イメージはCONTAINER REGISTRY内のhello
    • リージョンをasia-northeast1(東京)
    • 念のためスケーリングは最大数を10
    • 上り(内向き)の制御はすべて
    • 認証は認証が必要
    • その他はデフォルト
      image.png
      image.png
  3. 作成をクリック(1,2分で完了します)

とりあえずアクセスしてみる

作成できたらこのような画面になりました
image.png

とりあえずアクセスしてみます
image.png
ちゃんと認証が必要の設定が効いてるみたいです

権限を付与する

  1. サービスの一覧画面に戻ります
    image.png

  2. サービス名の左側にあるチェックボックスにチェックを入れ、権限をクリックするとサービスへのアクセス権を編集するダイアログが表示されます
    image.png

  3. プリンシパルを追加から設定します。

    • 新しいプリンシパルには権限を付与したいgoogleアカウント
    • ロールCloud Run 起動元
    • 保存
      image.png

再度アクセスしてみる

とりあえず正常応答が返るかどうかしか気にしてないので、curlでやります

  1. Cloud Shellを起動します(右上のターミナルアイコン)
    現在のログインアカウントとプロジェクトが設定された状態でTerminalが起動します(めちゃ便利)
  2. Cloud Shellで以下のコマンドでログインアカウントのIDトークンを取得します(ダイアログが表示されたら承認を選択)
    $ gcloud auth print-identity-token
    
  3. 取得したトークンを使って、サービスにアクセスします
    $ curl {YOUR_SERVICE_URL} -H 'Authorization: Bearer {token}'
    
  4. 先ほどは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になりました。大丈夫そうです
あとはサービスを削除して終了です

以上です!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0