helen's blog

ずっとおもしろいことしてたいな。

Terraform Cloud に Insufficient rights って言われた

Terraform Cloud で API Token を使ったときに権限不足でうまくいかなかった

Error: Insufficient rights to generate a plan

The provided credentials have insufficient rights to generate a plan. In order
to generate plans, at least plan permissions on the workspace are required.

公式ドキュメントを見ると, Terraform Cloud には User, Team, Organization の3つの API Token があるらしい

https://www.terraform.io/docs/cloud/users-teams-organizations/users.html#api-tokens

User token

ユーザが持っている権限と同じ
terraform login したときは User Token が作られる

Team token

Terraform Cloud はチームベースに権限を管理していて, チームに対して organization と workspace への権限を定義できる
organization への権限はつけたりつけなかったりできる
workspace への権限管理のために設計されてるのと workspace 内だけで活動するのあれば organization の権限はなくてよい
workspace への権限としては Read/Plan/Write/Admin のプリセットの権限がある
plan と read と write が別れてるのが便利

f:id:heleeen:20201202023055p:plain

あとどうでもいいけど適当に作りすぎて reader に write 権限つけちゃってるのがおもしろい

新機能として細かく権限設定ができるようになってた

f:id:heleeen:20201202022026p:plain

ここで言ってる workspace は Terraform Cloud の workspace のことで terraform workspace のことではない
あと Terraform Cloud で terraform workspace は使えない
難しいね...........

チームと同じ権限を持つAPI Tokenを作れるけど1チーム 1Token という制約がある
owners っていうデフォルトである強いチームと同じ権限をもたせることもできる
なので team token で実質 organization token になれるけど用途が違うのでメリットもなさそう

Organization token

organization レベルの設定ができる API Token を発行できて, チームや workspace の管理のために使われる
これも team token と同じで1チーム 1Token という制約がある

Terraform Cloud で workspace を作るまでを想定した token なので workspace への操作はできるけど plan とかはできない

www.terraform.io

ここまで読むとたしかに Organization で発行された Token は使えない気配しかなかった
workspace 1つずつに team を設定していくのがめんどうで organization で発行して使おうとしてたのがそもそも制約上NGだった....
それを管理するための organization token だけど...
organization はある程度大きな単位で作成して, workspace で分けていく想定で作られているのかな

API も Organization token を受け付けない

The organization token cannot perform plans and applies.

使えないぞってはっきり書いてある

www.terraform.io

権限管理めんどくさくて嫌になるけどこれくらいシンプルで用途を明示してくれてるのでやりやすくてよい