Oracle Analytics Cloud：権限のないデータソースの見え方

# はじめに
Oracle Analytics Cloud（**OAC**）では、データセットに対してアクセス権限を設定できます。
もし、ワークブックで使用されているデータセットにアクセス権限がなかった場合、どのような振る舞いをするのでしょうか？

- Excelベースのデータセットを使用してワークブックを作成、データセットに権限のないユーザーにどのように見えるか？
- サブジェクト領域からワークブックを作成、サブジェクト領域の一部に権限のないユーザーにどのように見えるか？

の2点を試してみました。

# 1. ユーザーとアプリケーション・ロール
検証に使用した、ユーザーとアプリケーション・ロールの関係です。

|ユーザー|明示的に所属するアプリケーション・ロール|
|:-|:-|
|user1|DV Content Author, Custom Role 1|
|user2|DV Content Author, Custom Role 1|
|user3|DV Content Author, Custom Role 2|

user1とuser2は同じアプリケーション・ロールに所属しています。
user3はDV Content Authorに所属しているのは同じですが、Custom Role 1 ではなく Custom Role 2 に所属しています。

# 2. データセットに対するアクセス権限
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/6956e91d-4868-cc7e-a354-7d02dfe92c19.png)
Custom Role 1にだけ、「読取り専用」アクセス権を設定しました。

# 3. サブジェクト領域に対するアクセス権限
サブジェクト領域の特定の列に対するアクセス権です。
「社員」フォルダの「職種」列では、表へのアクセス権の継承を取りやめます（「表と同じ権限」をオフにする）。
明示的に Custom Role 1 への読取り権限と、Custom Role 2 と Authenticated User へのアクセス不可を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/bfffc1ed-7289-aefc-2588-b82c9f50baea.png)

他の列に対しても、少しづつ設定を変えて権限をセットします。
「マネージャ」列では、Custom Role 2 にアクセス不可を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e35613e7-9483-cc2d-1091-d4af40491772.png)

「給与」列では、Custom Role 1 に読取り専用アクセス権を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/5cc0faed-483e-e65d-0522-cada8d7b17b3.png)

「コミッション」列では、Custom Role 1 に読取り専用アクセス権を、Authenticated Userにアクセス不可を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b8d2a9ee-8848-ded9-00d4-c646790671a9.png)

まとめると、こうなります。

|オブジェクト|権限|
|:-|:-|
|サブジェクト領域|デフォルト|
|「社員」フォルダ|デフォルト|
|「職種」列|Custom Role1：読み取り専用、Custom Role 2：アクセス不可、Authenticated User：アクセス不可|
|「マネージャ」列|Custom Role 2：読み取り専用|
|「給与」列|Custom Role 1：読み取り専用|
|「コミッション」列|Custom Role1：読み取り専用、Authenticated User：アクセス不可|

設定変更したので、デプロイします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/e235348a-7abd-e633-3240-f4d6d8b4d7da.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/a2951e9c-3926-c3f0-8713-3a71953ac3ed.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/866c3ed0-e156-5211-c10f-a7ebaeda2637.png)

# 4. アクセス権限の有無による見え方の違い
準備ができたので、ワークブックを作成します。

## 4.1 データセットにアクセス権限がない場合
user1でログインし、Custom Role 1 に読取りアクセス権を設定したデータセットでワークブックを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/714b5aab-06e2-d356-7977-db2d8ef80095.png)

共有フォルダに保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/1a0f070c-3b3d-2ffb-92ed-f878e19fc797.png)

### 4.1.1 同じ権限の別のユーザーでワークブックを開く
ログアウトし、user2でログインし直します。
保存したワークブックを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/319f58dd-3859-fbd0-a4dd-ce62f56952bf.png)

user1とは共通のアプリケーション・ロールに所属し、共有フォルダにもアクセス権限があるので保存したワークブックが見えています。

開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b55865a5-ef3a-22ce-d5fb-abf2980c36df.png)

user1の作成したワークブックが表示されます（保存したときの状態です）。
user2はログアウトします。

### 4.1.2 別の権限のユーザーでワークブックを開く
user3としてログインします。
共有フォルダへのアクセス権はあるので、ワークブックは見えています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/319f58dd-3859-fbd0-a4dd-ce62f56952bf.png)

開いてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/a22e2e9e-de6e-cf1e-ac9e-61d58d62d10c.png)

ワークブックで使用されているデータセットへのアクセス権限がないので、このようなメッセージが表示されました。
ワークブックは開けましたが、何も表示されませんでした。

## 4.2 サブジェクト領域にアクセス権限がない場合
続いて、もう一度 user1 でログインし直して、サブジェクト領域を使用してワークブックを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/b0a305db-f22e-2e05-8775-bdb5115027d1.png)

user1の権限では、このように見えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/8628c031-0cce-3b02-f32a-ab4be163653c.png)

表ビジュアライゼーションを作成し、名前を付けて共有フォルダに保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/254b405a-9ccb-28d9-4919-f244a0d24e33.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/f0015aba-5add-8a88-b761-92781cfcb4ee.png)

### 4.2.1 同じ権限の別のユーザーでワークブックを開く
user2でログインします。
先程の結果からも予想されますが、別のユーザーで保存したときと同じように開くことができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/72aade43-060b-e509-ff62-ab0efc175c7f.png)

### 4.2.2 別の権限のユーザーでワークブックを開く
user3でログインします。
新しいワークブックでサブジェクト領域を開くと、このようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/d9ba30ed-799d-c2b5-2f85-41914ac4b353.png)

「職種」と「コミッション」が表示されません。

user3は、Custom Role 2に所属しています。
Custom Role 2に対して明示的に読取りが許可されているか、上位からAuthenticated Userの読取りアクセス権を継承している列が表示されます。
「アクセスなし」を設定し上位からの継承を上書きしている列は表示されません。

:::note
すべてのアプリケーション・ロールは、Authenticated Userに割り当てられた権限を継承します。
そして、サブジェクト領域やプレゼンテーション・フォルダには、デフォルトでAuthenticated Userに読取り権限があります。
:::

ワークブックを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342206/bd6d3436-437b-9f7b-ac7a-1eefa742682d.png)

権限のある列だけが表示されました。

# おわりに
アプリケーション・ロールを通じた権限設定は強力ですが、場当たり的な設定を繰り返すと誰がどこに権限を保持しているのかわかりにくくなりますので注意しましょう。