IBM Cloudカタログに表示される項目を変える

# 1. はじめに
IBM Cloudのアカウントを管理していると、予算やセキュリティなどの都合で特定のサービス、プランを使用させたくないと考えることも多いと思います。IAMのポリシーを使って特定のサービスを注文させないようにすることはできますが、個別に設定するのが簡単ではありません。そんなときに活躍するカタログの可視性を制御してカタログの表示内容を変更する機能について紹介していきます。

カタログの可視性はアカウント所有者（マスター・アカウント）とIAMでカタログ管理の権限を付与されたユーザーが編集できます。
メニューで「管理」-「カタログ」と選択することでその編集画面に移動できます。
![スクリーンショット 2021-12-06 0.09.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/5822e1df-1257-c433-3907-af4166f2652b.png)

デフォルトの状態では全てのユーザーがユーザーにアクセスできる状態となっています。デフォルトの状態とカタログにアクセスした時に表示される画面は以下のものです(2021年12月現在)。
IBM Cloudをご利用いただいてるユーザーの皆様にとっては解説がいらない、見慣れた画面だと思います。

- 設定画面 - 「カタログ管理」の「設定」ページで IBM Cloud カタログが 「オン」 となっている状態

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/ebaaa265-9123-711a-0c53-402888db0169.png)

- カタログアクセス時の標準的な画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/cde0f06a-3e83-99c5-a370-064bafc43fe8.png)


# 2. カタログの可視性を全てOFFにする　 (アカウント内の全メンバーが何も見えない状態にする)

アカウントのメンバーがカタログを全て見られなくするのは簡単です。
カタログの可視性を操作できるユーザーが「カタログ管理」の[「設定」ページ](https://cloud.ibm.com/content-mgmt/catalog-settings)で IBM Cloud カタログを「オフ」とします
以下のようにメンバーはカタログにアクセスしてもその内容を確認することができません。
可視性のON/OFFは稼働中のリソースに対する直接ありませんが、オートスケール機能を使い動的にリソースを拡張/伸縮するようなサービスでは、動的な変化が発生する際にエラーとなる可能性がありますので、ご注意ください。

- 設定画面 - 「カタログ管理」の「設定」ページで IBM Cloud カタログが 「オフ」 となっている状態

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/7dfd49e7-8cc4-4f52-97f1-a2e52192797a.png)

- カタログアクセス時の画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/e5a8b487-8ffd-54b2-e1b4-b74a9bad82a2.png)

カタログにアクセスできなかったとしても、各サービスのプロビジョニング用のページは独自のURLを持っているのでそこにアクセスするとどうなるでしょうか？
実際にアクセスしてみると各サービスをプロビジョニングするためのページにアクセスしても料金プランにかかる情報を取得できず、エラーになるので、後続のサービス・インスタンスの作成に進むことができません。これでIBM Cloudコンソールから新しいサービス・インスタンスを作ることができなくなりました。

- Discoveryのカタログ・ページにアクセスした画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/b06c14b5-a736-3537-d687-ba5bafae3122.png)

カタログを全てのメンバーに見せないという運用は、実際のところはほとんどないと思います。現実的にはカタログの一部のみを見せたいケースが多く、2つの実現方法について説明していきます。

# 3. カタログを一部のみ見えるようにする (その1 IBM Cloudカタログの可視性を変える)

アカウント内の全てのユーザーが見えるIBM Cloudカタログを変えていきたいと思います。先ほどOFFにした「IBM Cloudカタログ」をもう一度「オン」にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/c4b1d1fb-0406-f5cc-361c-fc5953db64c1.png)

## 3-1. フィルターの適用

カタログの作り方として、(1) 既存のカタログをベースに不要なものを除いていくアプローチ、 (2) 何も含まないカタログに必要なものを追加していくアプローチの二つをとることができます。
「提供される製品」のステップ1で(1)のアプローチでは「IBM Cloudカタログのすべての製品を含める」、(2)のアプローチでは「IBM Cloudカタログの全ての製品を除外する」を選択します。

![スクリーンショット 2021-12-06 4.45.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/df62b9e2-0eab-6d1a-fe7a-08a633318e9b.png)


今回のシナリオでは(2)のアプローチの場合を説明するので「IBM Cloudカタログの全ての製品を除外する」を選択します。(1)のアプローチでも画面上の操作はほぼ同じです。
必要となるサービスがAI関連のサービスのみであるケースを想定し、「カテゴリー」で必要なサービス群のみを表示するようにします。「カテゴリー」に対する「編集」をクリックします。
![スクリーンショット 2021-12-06 2.02.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/364ef08f-884f-be38-0b31-c7259a0f49a8.png)

フィルターの画面が表示されるので、必要なカテゴリー「AI / Machine Learningを含める」にチェックをいれ、「更新」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/1065f173-a0a9-b204-0319-7b8eec4c2884.png)

## 3-2. 例外の作成

次にAI関連のサービスを呼び出すためのランタイム環境が必要なので、「Code Engine」サービスをこれ以外に追加したいとします。そのようなケースでは「例外」を設定します。
「例外」の「追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/7d469673-0b6f-b009-ef9f-1ad9e54291c4.png)

「例外の更新」画面で「条件」に「次を含める」、「製品」に「Code Engine」を選択し、「例外の更新」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/d9bec0e6-afdf-7072-9f20-5ef0dd939987.png)

## 3-3. プランの可視性の設定

最後にサービスのプランの可視性を見ていきます。執筆時点(2021年12月時点)ではプランの選択を行えないサービスも多数存在しますが、いくつかのサービスではその選択も可能です。
表示されている画面で「プレビュー」で、カタログに表示される項目を確認します。「含む」列で「はい」となっているものがカタログに表示され、「いいえ」となっているものがカタログには含まれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/f3c3c6c7-bf04-345d-9592-2928342d9404.png)

ここでは Discoveryサービスのプランについてみていきます。
まず、カタログで表示されるプランについて確認しておきます。ここでは別のWebブラウザーでIBM Cloudカタログを開き確認します。IBM Cloudカタログ上では「ライト」「追加」「エンタープライズ」「プレミアム」の4プランがありました。今日は安価に利用できる「ライト」と「追加」プランを見せるように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/c305dc39-652d-b0b0-b427-07bd505e9f50.png)

カタログ管理の画面に戻り、「プレビュー」のリストから「Watson Discovery」を探し、「すべてのプランを含める」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/48ea61aa-6ebe-ef70-2be6-2269fd03d0f3.png)

表示された「例外の更新」ダイアログで、「プランを選択」のリストを選択し、「Lite」と「Plus(追加)」にチェックをいれ、「例外の更新」をクリックします。
![スクリーンショット 2021-12-06 4.49.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/f4c74251-c629-f2a7-fd6d-4ed44fd88503.png)

他のサービスも同じようにプランを設定できるサービスについて同じように設定を繰り返します。

##3-4. 更新、忘れずに！

最後にここまでの設定を反映します。最初のカタログのON/OFFはスイッチを選択するだけで反映されたのですが、細かい設定はの反映は「更新」ボタンをクリックする必要があります。これを忘れるとこの3章の作業を最初からやり直しになってしまうのでご注意ください。

![スクリーンショット 2021-12-06 4.52.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/3f1b61b2-dd11-47c9-31be-77788aa43052.png)

##3-5. メンバーのカタログを確認
最後にメンバーのカタログ画面を確認します。まず、[カタログ](https://cloud.ibm.com/catalog)にアクセスすると、AI関連のサービスとCode Engineだけが含まれることを確認できます。

![スクリーンショット 2021-12-06 4.57.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/aeca296b-50a2-d4bf-1c02-15dcd484340e.png)

続いてDiscoveryサービスのタイルをクリックすると、あれ、「追加」プランしかありません。東京リージョンを選んでも同じように「追加」プランしか表示されません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/e9e5e5e8-9718-a177-b21f-bcf151ece47f.png)

元の状態をよく確認しないで始めてしまいましたが、実は「ライト」プランは記事の執筆視点ではロンドンリージョンのみでの提供のようで、ロンドンリージョンを選択すると、無事に「ライト」プランも「追加(Plus)」プランも表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/b1506d41-6ad8-dc3d-7639-ccb9d25d18da.png)

# 4. カタログを一部のみ見えるようにする (その2 新たなカタログを作成する)

3章と4章の違いはデフォルトのIBM Cloudカタログを使うか、全く新しい別のカタログを使うかの違いです。

今回は全てのメンバーにIBM Cloudカタログを利用させないので、「IBM Cloudカタログ」の可視性をオフにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/7dfd49e7-8cc4-4f52-97f1-a2e52192797a.png)

新しいカタログは「プライベート・カタログ」という機能を利用します。
カタログを管理する権限をもったユーザーが[プライベート・カタログ](https://cloud.ibm.com/content-mgmt/catalogs)から管理画面にアクセスできます。



## 4-1. プライベート・カタログの作成

早速プライベート・カタログを作成しましょう。右上の「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/883ef4cb-c6a5-cb13-d7d7-215493b96d37.png)

カタログ・タイプを「製品（デフォルト）」、名前を任意の名称、ここでは「MyCatalog」、テンプレートの選択を「製品なし」とします。
カタログ・タイプについては「製品」と「仮想プライベート・エンドポイント」の選択肢がありますが、今回はサービスのタイルの可視性を制御したいtので「製品」を選択します。テンプレートの選択は3.1章で説明したカタログの作成方法(1) 既存のカタログをベースに不要なものを除いていくアプローチ、 (2) 何も含まないカタログに必要なものを追加していくアプローチの二つにあたります。「製品なし」が(2)、「すべての製品」が(1)に相当します。(順番が画面の順番と異なります）
スクリーンショット内のマスクしてある部分はリソース・グループ名が表示されますが、一旦デフォルトの値のままで進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/170031a7-c104-f46c-dcbf-9d39b668b176.png)

最後に画面下部にある「作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/9aa90ecf-9542-4482-9f61-f9d032d39c2f.png)


## 4-2. プライベート・カタログへのコンテンツの追加

作成したカタログの画面が表示されます。
「プライベート製品」が表示された状態で表示されます。「プライベート製品」とは利用者が開発したコンテンツ等をIBM Cloudカタログに登録してアカウントのメンバーで共有することができます。HelmチャートやオペレータをつかってKubernetes/OpenShiftクラスター上でご用意いただいたソフトウェアを稼働することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/425e9303-8b0a-4334-dffb-19f57d521f8c.png)

ここでは「パブリック製品」を追加していくので、「パブリック製品」を選択し、「フィルター管理」をクリックします。
先ほどと同じようにAI関連のサービスとそれを呼び出すためのCode Engineサービスを使えるようにします。
![スクリーンショット 2021-12-06 5.22.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/98bc62f6-c988-b637-e24f-ecf41bed9307.png)

フィルターの管理画面では見た目こそ若干違いますが、設定できる項目は3章で設定した内容と同等の内容が設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/71e434b9-83c6-88d7-67e7-44ae818d8950.png)

同じように設定していきます。設定が終わった後、「更新」をクリックします。
![スクリーンショット 2021-12-06 5.27.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/23b0614c-e613-f1f4-40c5-85848140059f.png)

MyCatalogに含まれるサービスが列挙されるので、先ほどと同じようにDiscoveryサービスのプランを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/b288d890-8bd2-efe9-4bea-1d22f1208105.png)

フィルターの管理画面にDiscovery用の項目が追加されたことを確認して、「更新」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/518c00ae-11c4-171c-5ade-8de7b9427c58.png)

## 4-3. メンバーがカタログにアクセスする。

メンバーの人が[カタログ](https://cloud.ibm.com/catalog)にアクセスするとどうなるでしょう。
同じようなカタログが表示されますが、作成したカタログの名称「MyCatalog」を含むリストが表示されるようになりました。
これは4-1章ですこし触れた「プライベート製品」を複数のカタログで利用と可能とした時にカタログごとにコンテンツを検索できるようにするためです。
![スクリーンショット 2021-12-06 5.41.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83689/b66ee177-127e-670e-eb95-6bafa5fcd2b5.png)

Discoveryサービスをクリックし、シドニーリージョン、東京リージョン、ロンドンリージョンを順番に表示し、先ほどと同じ内容が含まれることを確認できると思います。


# 5. 要注意！カタログの可視性に関わらずCLI/APIでオーダーできるサービス
[IBM Cloud Doc](https://cloud.ibm.com/docs/account?topic=account-known-issues)


可視性をOFFにしても以下のサービスについては、CLIやAPIを用いることでサービス・インスタンス、リソースを作成できてしまうとIBM Cloud Docに書かれています。
厳密に制御したいのであれば、IAMのポリシーの設定を行う必要があります。


- Block Storage for VPC (VPC)
- Citrix Netscaler VPX (*)
- Fortigate Security Appliance (*)
- Hardware Firewall (*)
- Hardware Firewall Dedicated (*)
- IBM Cloud Backup (*)
- IBM Cloud Bare Metal Servers (*)
- IBM Cloud Block Storage (*)
- IBM Cloud Container Registry
- IBM Cloud Content Delivery Network (*)
- IBM Cloud Direct Link
- IBM Cloud Direct Link on Classic (*)
- IBM Cloud Functions
- IBM Cloud Gateway Appliance (*)
- IBM Cloud Hardware Security Modules (*)
- IBM Cloud Kubernetes Service
- IBM Cloud Load Balancer (*)
- IBM Cloud Object Storage
- IBM Cloud Schematics
- IBM Cloud Virtual Servers (*)
- Load Balancer for VPC (VPC)
- Subnets and IPs (*)
- Virtual Private Cloud (VPC)
- Virtual Server for VPC (VPC)
- VLANs (*)
- VPN (*)
- VPN for VPC (VPC)

以上のサービスに対しオーダーできないようにするためにはIAMポリシーの設定を行う必要があります。
IAMポリシーは個々のユーザーもしくはアクセスグループに対して付与するので、それぞれを設定/確認します。


- クラシック・インフラストラクチャのサービス (*) については個々のユーザーに対するIAMのアクセス・ポリシーの設定において、クラシック・インフラストラクチャーの許可画面で設定できる許可セットの「基本ユーザー」の設定にすることで以下のサービスの新たなオーダーを防ぐことができます。
- VPCインフラストラクチャのサービス (VPC)においてはユーザーおよび所属するアクセス・グループに対するIAMのアクセス・ポリシーで、「VPC Infrastructure Service」に対するプラットフォームを与えない、もしくは与える場合でも「リソース・タイプ」でリストに列挙された項目を選択し、それぞれ「プラットフォーム・アクセス」の「Viewer」もしくは「Operator」のポリシーを付与するようにします。
- その他のサービスについてはユーザーもしくはアクセス・グループに対するIAMのアクセス・ポリシーで、リストに列挙されているそれぞれのサービスに対するアクセスポリシーを与えない、もしくは与える場合でも「プラットフォーム・アクセス」の「ビューアー(Viewer)」もしくは「オペレーター(Operator)」のポリシーを付与するようにします。

# 6. まとめ

今回はIBM Cloudカタログの全体、一部の可視性を変更する方法についてご紹介してきました。

二つの方法のどちらを使うかについては好みの問題もあるかと思いますが、3章で紹介したIBM Cloudカタログを使う方法のほうが簡単だと思います。4章のプライベート・カタログはプライベート製品を使い、利用者の皆様が開発されたアプリケーションやAPIをカタログ化して使うようなケースでも有効な方法なので、ご利用方法に応じてどちらをご利用いただくか選択いただければと思います。