はじめに
こちらの記事は下記Advent Calendar 2024で紹介しているIBM Cloud権限設定における Code Engine
になります。
共通権限は割愛
こちらの記事に記載しているように、プラットフォーム・アクセス、サービス・アクセスの権限でそれぞれどのようなものが共通して設定されているかを紹介させて頂きました。
こちらの記事では共通部分で出現する権限を除いた各サービス毎の権限設定を紹介します。
Code Engineで指定可能な権限のアクセス範囲
- リソース・グループ
- Location
- Project
リソース・グループの指定
これは指定されたリソース・グループに所属するCode Engineのみに対してアクセス権限を適用します。異なるリソース・グループのCode Engineに対しては別途権限を設定する必要があります。
Locationの指定
これは jp-tok
, jp-osa
のように、Code Engineが作成されたロケーションを指定して許可を与えることが可能です。勝手に海外のDCに作成しないようにするといった対策が必要な場合は利用しても良いですね。
Projectの指定
これは既に作成されたCode EngineのProjectが存在する場合、そのProjectを指定して権限を与えることが可能です。
開発チームには既存のProject上の操作だけ許可して、新規Projectを作らないように、といった権限の振り分けが必要な場合に利用できます。
Code Engineに設定された権限
プラットフォーム・アクセスの権限
※Admin : Administrator, KM : Key Manager, SCR : Service Configuration Reader
権限 | Viewer | Operator | Editor | Admin | KM | SCR |
---|---|---|---|---|---|---|
codeengine.config.read | 〇 | |||||
codeengine.dashboard.view | 〇 | 〇 | 〇 |
プラットフォーム・アクセスとして設定されているCode Engineの権限はダッシュボードの参照といった権限のみになります。Code Engineのどの機能を利用できるかはサービス・アクセス側で設定して、という感じですね。
サービス・アクセスの権限
Projectに対する権限
権限 | Reader | Writer | Manager | Compute Environment Administrator |
---|---|---|---|---|
codeengine.computeenvironment.projects.create | 〇 | 〇 | ||
codeengine.computeenvironment.projects.delete | 〇 | 〇 | ||
codeengine.tenant.read | 〇 | 〇 | 〇 | |
codeengine.tenant.update | 〇 |
プロジェクトを作成するには、WriterかManagerの権限が必要になります。
ただ、注意としてプラットフォーム・アクセスの共通権限部分でインスタンスを作成する権限が結局必要になるので、プラットフォーム・アクセスのEditor、Administratorといった権限が必要になります。
また、Code Engineはリソース・グループを明示的に指定して作成するサービスのため、リソース・グループのみ
の権限で少なくとも対象のリソース・グループに対するReader権限が無いとインスタンスの作成で権限不足になります。
Project内のアプリやJobに対する権限
権限 | Reader | Writer | Manager | Compute Environment Administrator |
---|---|---|---|---|
codeengine.tenant.entities.read | 〇 | 〇 | 〇 | |
codeengine.tenant.entities.create | 〇 | 〇 | ||
codeengine.tenant.entities.update | 〇 | 〇 | ||
codeengine.tenant.entities.delete | 〇 | 〇 | ||
codeengine.computeenvironment.create | 〇 | |||
codeengine.computeenvironment.delete | 〇 |
プロジェクト内のアプリケーションやSecretといった構成情報のリスト表示はReader権限があれば良いですが、更新には基本的にWriter以上の権限が必要です。ただ、ProjectをIBM Cloudの他のリソースと接続する設定(codeengine.tenant.update)を行うには、Administratorの権限が必要な点に注意してください。
残念なことに執筆時点で codeengine.computeenvironment.create/delete
がいったい何をするための権限なのかよくわかりませんでした。
この権限だけ付与してもプロジェクト上にアプリを作成したりすることもできないので、どこで利用するんだろう状態です。
さいごに
Code Engineとして個別に設定されている権限は少なかったですね。
アプリやジョブといったコンテナ環境を立ち上げるのであれば基本的にサービスアクセスに対してWriter以上の権限を付与する必要がありそうですね。
他のリソースと接続はわざわざ宣言しなくてもそのサービスにアクセスするための認証情報を作成すれば、IBM Cloud内ネットワークでそのサービスのエンドポイントにアクセスできるはずなので、サービス・アクセスのManager権限の付与するタイミングはあまり多くは無さそうに思いました。
Compute Environment Administratorとは何者なのか…またわかったら記事を更新したいと思います。