LoginSignup
4
2

More than 3 years have passed since last update.

有効期間が短いサービス アカウント認証情報の作成しAPIを実行してみる

Last updated at Posted at 2020-05-18

はじめに

以前の記事の続きです。

Service Accountの権限でAPIを実行する際、テンポラリのアクセストークンを取得してそのトークンで認証認可を行いますが、curlコマンドで期限を設定してトークン発行してみます。

マニュアルとしては以下にになります。
https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials?hl=ja#sa-credentials-delegated-chain

やってみる

以前の記事通りに環境を構築する。ただし赤枠のIAM RoleはStorage Adminに変更する。確認がシンプルになるので。

image.png

アクセストークンを作成する。lifetimeとして300秒を指定する。権限自体は、Google Accountの権限を「-H "Authorization: Bearer」で指定する。expireTimeが設定されたアクセストークンが返される。

$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud config config-helper --format=json | jq -M -r '.credential.access_token')" --data '{"delegates":[],"scope":["https://www.googleapis.com/auth/cloud-platform"],"lifetime":"300s"}' https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/impersonate-sa@PROJECTID.iam.gserviceaccount.com:generateAccessToken

{
  "accessToken": "ya29.c.KoACywdSv_9HHqVsRelOtuhIOhDKDXdrtGth8GC1JRBsVtRdantYmT6dHs0QgQqOYHYj_mjeF3OKAE9yR5eBXCJkAXhFvpceMAyJVt31X-k2s8wfLdJ2elsChV6FdRDlrKuBcf47_CODus2UPAwvUzVoCCUugoo_6NqX7MML6FsCFIXW_qMN0jqQYQllHjG0gqzsuTrgeRBuA1UL4c1hRDR759tiSXExWWp5V9CU6qsXFPYsv7RGkbC_pINwaOpLF7IEzg0ow9H38lIOsBYJyKCMuB-GIuu-U9YsIfE6KzEn0tZxlTx3b_lTc3aFpJBhPz0By33E61V-************",
  "expireTime": "2020-05-18T03:28:36Z"
}

作成したアクセストークンを指定して、GCSのバケット情報を確認する。

$ curl -H "Authorization: Bearer ya29.c.********************************" https://www.googleapis.com/storage/v1/b/sample_aaaaabbbbbcccccc/o
{
  "kind": "storage#objects",
  "items": [
    {
      "kind": "storage#object",
      "id": "sample_aaaaabbbbbcccccc/README-cloudshell.txt/1582881792887319",

300秒後、再度確認するとアクセストークンの期限が切れていて失敗する。

$ curl -H "Authorization: Bearer ya29.c.********************************" https://www.googleapis.com/storage/v1/b/sample_aaaaabbbbbcccccc/o
{
  "error": {
    "code": 401,
    "message": "Invalid Credentials",
4
2
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
4
2