#はじめに
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.3 この画面でDefense Modeに変更しようとすると失敗する(期待通り)
Defense Modeへの変更はSecurity
の機能であり、Reliability
の機能ではないので。
##3.4 CDNをキャッシュしようとしても失敗する(期待通り)。
CDNはPerformance
の機能であり、Reliability
の機能ではないので。
##3.5 一方で、DNSレコードの追加・編集・削除は成功する(期待通り)
DNSはReliability
の機能なので。
#参考
IAMでは、以下のようににsub-scopeという機能もあるようだが、実際にはこれは機能していなかった。これは現時点では一般用途向けには推奨されていないらしい(多分内部的に使われているのであろう)ので、使わない方がよさそう。