はじめに

実際の動作確認時などを想定して、以下で有効化したIAPにGUIだけでなく、curlでアクセスしてみました。

はじめにLoadBalancer経由のCloud Storageへのアクセスに対するIPアドレス制御が可能になった。https://cloud.google.com/blog/ja/products/identity-security/cloud-armor-adds-more-edge-security-policies-proxy-load-balancersCloud Armorに新たに追加されたエッ...

手順

作業するサービスアカウントを作る

  • 対象のサービスアカウントを作ります。
  • Roleは「IAP-secured Web App User」を付与します。
  • サービスアカウントのキーは実施端末に配置します。

アクティベートする

  • 以下コマンドでサービスアカウントのアクティベートをする
gcloud auth activate-service-account \
    サービスアカウントメアド \
    --key-file "jsonファイルの置き場" \
    --project 対象プロジェクト名

アクセスする

  • IAPの対象OAuth構成のクライアントIDはIAPの画面から確認する
    以下の右側のところに表示されます(セキュリティの都合上表示していません)。

  • 事前に認証で利用するトークン情報を取得する
    上記で取得した値を利用してトークン情報を取得する
TOKEN=`gcloud auth print-identity-token --audiences=IAPの対象OAuth構成のクライアントID`

※audiencesの「IAPの対象OAuth構成のクライアントID」の値はダブルクオーテーションでくくらない

  • 対象コンテンツへアクセスする
    上記のトークンを利用して対象コンテンツへアクセスする(※FQDNについてはアクセスしたいFQDNを入れてください)。
curl -H "Authorization: Bearer $TOKEN" -X 'GET' https://FQDN -H 'accept: application/json' -H 'Content-Type: application/json'
  • 結果(想定したページが表示されました)
<html>
<body>
cloudrun no test dayo --- !!!!
</body>

所感

以下のような部分が実施時にでてしまいましたが、コマンドラインからもIAPのページへアクセスできることがわかりました。

  • curlでのアクセス時にGETではなくPOSTで行いmethodが無いとでた
  • トークン取得時に「audiences」の値をダブルクオーテーションでくくって、クライアントIDが一致しないとでた
  • トークン取得せずにアクセスするとそもそもコンテンツの内容が表示されなかった

はじめにでご案内した自身が記載した記事にも書いてますがまだCloudRunのIAPはPreviewですので注意ください。

元記事はこちら

IAPを有効化したCloud Run へ curl でアクセスする
著者:@hirosait


アイレットなら、Google Cloud で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業すべてを一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。Google Cloud プレミアサービスパートナーであるアイレットに、ぜひお任せください。

Google Cloud サーバー監視・運用サービスページ:
https://cloudpack.jp/service/gcp/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://www.iret.co.jp/contact/service/form/