Foundryで特定のメンバーにアクセス制限をする方法

# 目次
1. はじめに
1. 機能紹介
1. 設定方法
1. 最後に

# はじめに
VoltMX Iris（Visualizer）やFoundry（Fabric）で開発を行う際、
主要メンバー以外はFoundryの編集ができないようにしたり、
Publishを勝手に行わないよう操作を制限したい時ありませんか？

今回はFoundryのConsole Access Control機能を使って、
特定のメンバーにのみアクセスを制限する方法について紹介します！

# 機能紹介
まずアクセス権限の種類には、
NO ACCESS、READ ONLY、FULL ACCESSの3種類があります。

それぞれの権限で出来ることを簡単に下の表にまとめました。
|権限|読み取り|書き込み|FoundryからのPublish|IrisからのPublish|
|--|:--:|:--:|:--:|:--:|
|NO ACCESS|×|×|×|×|
|READ ONLY|○|×|○|×|
|FULL ACCESS|○|○|○|○|

※Appを新規作成すると、アクセス権限はデフォルトでFULL ACCESSに設定されています。

各権限に設定したアカウントでアクセスした際、
実際にどのような表示となるのか紹介していきます。

## FULL ACCESS
デフォルトのFULL ACCESSに設定されている場合、
対象のAppはApp一覧に表示され、アクセスができる状態になっています。
![スクリーンショット_0005-03-15_11_39_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/5e6529cc-2136-ba5f-ded3-e0e0318874d4.png)
またFoundryの読み書きも可能なので、各サービスの作成ボタンが活性になっておりいつでも編集できる状態となります。
![スクリーンショット_0005-03-15_11_45_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/adf5febd-4abb-cb01-17c4-0aab4dd57472.png)

## READ ONLY
READ ONLYの権限に設定されたアカウントでアクセスした場合、
FULL ACCESS同様対象のAppはApp一覧には表示されますが、🔒マークが表示されるようになります。
![スクリーンショット_0005-03-15_11_40_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/bebcb850-4618-f586-9b23-84ad1dfaadbf.png)

対象Appを開きサービスのタブを開いてみると、
作成ボタンなどのボタンがクリックできないような状態となり、閲覧だけ可能になります。
![スクリーンショット_0005-03-15_14_49_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/e0ca6e76-b64c-3070-2ab1-6d91b34bcc85.png)

Serviceの作成、更新、削除などはできませんが、
Publishタブを開いてみると、FoundryからのPublish,Unpublishは可能です。
![スクリーンショット_0005-03-15_11_42_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/5f99c6e9-6288-58bf-1f59-dfefde68149d.png)

また、Irisを開きBuild->Build and Publish Web（またはNative）ボタンでPublishを行う場合、
Build and Publishボタンを押すこと自体は可能ですが、
IrisからのPublishを実行した場合、以下のようなエラーが表示されPublishは制限されるようになります。

![スクリーンショット 0005-03-15 11.56.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/423f23b2-a9e9-016f-e71a-87e29e6906f5.png)
![スクリーンショット 0005-03-15 14.58.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/114b5f64-4f06-e0d0-90c4-86349859acf6.png)

:::note
Memberの権限をREAD ONLYに設定することで、
**Iris側からの意図しないPublishを防いだり、
Foundryで見覚えのない編集が行われるのを防ぐことができる**のでおすすめです。

<font color=red>※ただし、READ権限でもFoundryからのPublishは可能なため扱いにはご注意ください。</font>
:::


## NO ACCESS
NO ACCESSの権限に設定されたアカウントでアクセスした場合、
そもそも対象のAppはApp一覧に表示されなくなります。
![スクリーンショット_0005-03-15_11_38_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/2ec6cf4f-f334-b172-886e-ace7a4da8093.png)

直リンクにアクセスしたとしてもエラーが表示され、見れないようになっています。
![スクリーンショット 0005-03-15 11.38.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/e260149d-a7ce-8157-d99e-8254556e9e4c.png)

Appにアクセスできないため、当然Foundryの編集やPublishもできません。

またIrisから対象Appと接続を行おうとしても、App一覧に表示されないようになります。

:::note
NO ACCESSに設定しておくことで、
プロジェクトに関係のないメンバーが入ってくるのを防ぐことができるので、
限られたメンバーにしかAppを使わせたくない場合におすすめです。
:::

# 設定方法
では、アクセス権限を設定する方法について説明します。

OwnerかAdmin権限でログインし対象のAppを開き、「⋯」をクリックします。
「Access Control List」というメニューをクリックします。
![スクリーンショット_0005-03-15_15_18_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/da2035ec-9584-04da-8d92-d737777d0c85.png)

General Accessでは、全てのMember権限ユーザーのアクセス権限を変更することができます。
Specific Accessでは、Member権限のうち対象のユーザーにのみ個別の設定を作成することができます。
![スクリーンショット_0005-03-15_15_19_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/d4672b6e-ccb2-e210-2ecd-28e6886d8c48.png)

それぞれ設定方法を紹介していきます👀

## 全てのMember権限ユーザーの権限を変更する
Member権限のユーザー全員の権限を変更する場合は、General Accessで設定を変更しましょう。
例えば、OwnerとAdmin以外全員Appへのアクセスをさせたくない場合は、NO ACCESSに設定します。

ラジオボタンで権限を選択したら、「SAVE」ボタンで変更を保存しましょう。

## 特定のメンバーのみ権限を付与する
特定のメンバーにのみ権限を付与する場合は、
Specific Accessでメンバーを追加することが可能です。

例えば、開発者AさんにはFoundryでのAPI作成を行ってもらいたいので、
Aさんにのみ読み書き権限を与えて、それ以外のメンバーは閲覧だけに可能にしたい場合。

まず、General Accessで、「READ ONLY」に設定後、
Specific Accessの「+Add」をクリックしAさんを追加します。
![スクリーンショット_0005-03-15_15_32_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/e4b25cea-e9ce-640b-a6bc-4ceb6459848a.png)
そしてAさんの権限を「FULL ACCESS」に設定することで、
Aさんのみ読み書き可能、その他のメンバーは閲覧のみに設定することができます。
![スクリーンショット_0005-03-15_15_32_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/8262f7c2-388f-708f-4b09-54247db209f0.png)


# 最後に
今回はAppの全体のアクセス権限を変更する方法について紹介しましたが、
IntegrationServiceやIdentityService等の特定のサービスのアクセス制限も変更することが可能です。
下記の公式ドキュメントに設定方法が記載していますので、気になる方は是非参考にしてみてくださいね！

# 参考
https://opensource.hcltechsw.com/volt-mx-docs/docs/documentation/Foundry/voltmx_foundry_user_guide/Content/ConsoleAccessControl.html