はじめに
CIS(IBM Cloud Internet Service)にはSecurity/Performance/Availabilityに関する機能が豊富に存在するため、すべてのユーザーにすべての権限を与えるのではなく、特定のユーザーには限定した機能しか触らせないようにしたい・・・という要望は普通にあると思う。今回はIBM CloudのIAMでAvailablity(DNSなど)のみの権限を与えられるかどうかを確認してみた。
やりたいことは以下の通り。
- 複数インスタンスがあるなか、特定のインスタンスにしかアクセスさせたくない。
- その複数インスタンスの中でも、特定のドメインにしかアクセスさせたくない。
- そのドメインの中でも、Availability関連の機能(DNSなど)しか編集させたくない。
1. 初期状態
管理者視点:
たくさんサービスが存在している。

管理者は複数あるCISインスタンスにアクセスできるが、そのCISインスタンスの中にも複数のドメインが存在しそれらにアクセスできる。

利用者視点:
2. CISのコンソールから権限を付与
管理者視点での作業
今回は特定のドメインに対するDNS関連の作業のみを許可したいので、対象ユーザーにManagerロールを与える。(ちなみにWriter権限だと既存Objectの編集はできるが新規作成などはできないようだ)。DNSはReliabilityに属するので、それのみを選択して、Create Policyを選択する。なお、ドメインレベルでのViewerロールやReaderロールは必ず付与されてしまうようだ。


IAMで該当ユーザーを確認してみると、上記操作によって新たに以下の権限が作成されている。

3. テスト
ユーザー視点での作業
3.1 該当のCISインスタンスが見えるようになった(期待通り)
3.2 他のドメインは閲覧できない(期待通り)
3.3 この画面でDefense Modeに変更しようとすると失敗する(期待通り)
Defense Modeへの変更はSecurityの機能であり、Reliabilityの機能ではないので。


3.4 CDNをキャッシュしようとしても失敗する(期待通り)。
CDNはPerformanceの機能であり、Reliabilityの機能ではないので。

3.5 一方で、DNSレコードの追加・編集・削除は成功する(期待通り)
参考
IAMでは、以下のようににsub-scopeという機能もあるようだが、実際にはこれは機能していなかった。これは現時点では一般用途向けには推奨されていないらしい(多分内部的に使われているのであろう)ので、使わない方がよさそう。

