前回 Dynamics 365 でユーザーを追加しましたが、ここではセキュリティの基本的な構造と設定について理解をしていきましょう。
Dynamics 365 は以下のようなセキュリティの構造になっています。
部署・チームは組織のグループで、その中でユーザーを追加することで組織グループを細かく管理できます。セキュリティロールとフィールドセキュリティはアクセス権の制御で使用します。ここでは、それらついてご紹介していきます。※ フィールドセキュリティは別の記事でご紹介します。
目次
部署
すべてのユーザーは部署に必ず所属します。部署は、通常の組織にある部署のように階層化しており、上位の部署が下位の部署よりも権限が強くなるようにセキュリティ設定を構成していきます。この設定は、後述するセキュリティロールとの組み合わせで実現できます。
Dynamics 365 は既定で部署を1つ作成しています。これはインスタンスと同じ名前で作成されており組織 (ルート部署) と呼ばれています。※ ルート部署は名前の変更や削除ができませんのでご注意ください。
部署は1つの上位部署を持ち、複数の下位部署を持つことができます。例えば以下のような部署を構成することができます。
部署を作成する
それでは、部署を作成してみます。Dynamics 365 にアクセスして「設定」の「セキュリティ」 をクリックします。
「新規」ボタンをクリックします。
「名前」を入力して、「上位の部署」にルートの部署を入力したら「保存して閉じる」をクリックします。
上記で作成した部署の下に2つ別の部署を追加します。同じように部署を作成します。
「上位の部署」で先ほど作成した部署を追加します。これで部署が階層化されます。
部署の削除
部署を削除する場合は、一度部署を無効にする必要があります。削除する部署を選択します。
「操作」を開き「無効にする」をクリックします。
ダイアログが表示されるので「非アクティブ化」をクリックします。
無効にしたら、「操作」を開いて「部署の削除」をクリックして部署を削除します。
これで削除は完了です。一度無効にして非アクティブにすることで削除できるようになります。
また、最下層の部署を削除する場合は上述の手順通り削除して問題ありませんが、上位の部署を削除する場合は、まず上位と下位の順序を変更してから削除しましょう。理由として、もし上位をそのまま無効化してしまうと、下位の部署もすべて無効化されてしまうからです。
例)ルート部署 – 部署A – 部署B – 部署C とあり、部署B を削除する場合
- まず部署Cの上位の部署を部署Aに切り替える
- 部署Bを無効化する
- 部署Bを削除する
チーム
レコードなどを共有する上で、ユーザーとともに利用され、部署をまたいだコラボレーションを行う場合は、チームを活用することができます。
例えば、営業1課に所属している A さんが、その営業経験を生かして、社内で発足したマーケティングの新プロジェクト参画のオファーがあるとします。この場合、Aさんはマーケティング部の所有するリードやマーケティング戦略情報にアクセスできる新しくマーケティングプロジェクトチームを作成して、そのチームにAさんを所属させることで、Aさんは営業1課に所属しながらも、マーケティング部門とプロジェクトを進めることができるようになるわけです。
また、退職などを理由にレコードの所有者が一時的に不明になった場合は、その退職者が所属していた部署のチームに、レコードの所有者を割り当てることで、同じ部署のメンバーが誰でもアクセスできるようになります。そうすれば、担当者が決まった段階で所有者を自身で変更できるため便利です。
チームの種類
Dynamics 365 のチームは2種類存在します。
- 所有者チーム:レコードの所有者としてチームを選択することができ、チームにセキュリティ ロールを割り当てることができます。レコードを所有しているチームのユーザーは、そのレコードに対してフル アクセス権が付与されます。(※1)
- アクセス チーム:レコードの所有者に設定することはできず、セキュリティ ロールの割り当てもできません。アクセス チームはレコードへの 「共有」 によりアクセス権を付与できる仕組みになります。(※2)
(※1) 所有者チームは、下図のようにレコードの割り当てで、ユーザーと同様に選択できます。チームをレコードの所有者にすることで、同じ部署に所属するユーザー全体にレコードのアクセス権を付与できるようになるため、担当者が部署移動・退職した際に便利です。また、アクセスチームのように共有設定でアクセス権を付与することも可能です。
(※2) アクセス チームはレコードの共有設定でアクセス権限を付与することができます。所有者チームのように、レコードの所有権を付与することはできません。
部署と所有者チームの関係
部署を作成した際、自動的に所有者チームが同名で作成されます。この所有者チームは、その部署に所属するすべてのユーザーに既定で追加される既定のチームです。ユーザーが所属できる部署が1つのみであるように、部署に関連する既定のチームも1チームのみです。
例えば、営業部という部署に所属して、既定のチームが「営業部」の場合、さらに「1課」という既定のチームを追加できません。もし追加しようとすると以下のようなエラーが表示されます。
アクセスチームの特徴
1ユーザーが複数のアクセスチームに参加することは可能です。そのためアクセスチームは、担当者の所属する部署か課とは異なる、組織を横断するようなプロジェクトに参加する場合に利用されることが多いです。特別な用途で作成され、不要となれば削除することができます。
チームに関する詳細は、以下の公式ドキュメントもご参照ください。
部署を作成するとき、次の点に留意してください。
- 組織 (ルート部署とも呼ばれる) は、Dynamics 365 の部署階層の最上位です。 Dynamics 365 は、Dynamics 365 をインストールまたは準備するときに、自動的に組織を作成します。 組織名の変更または削除はできません。
- 各部署は、上位の部署を1 つのみ持つことができます。
- 各部署は、下位の部署を複数持つことができます。
- すべてのユーザーを 1 つの (または 1 つのみ) 部署に割り当てる必要があります。
- チームは 1 つの部署のみに割り当てることができますが、チームは複数の部署からのユーザーで構成できます。 別々の部署のユーザーがレコードの共有セットで共同作業する必要がある状況では、チームの使用を検討してください。
引用元:レコードへのアクセスを制御するために事業単位を作成または編集
セキュリティロール
セキュリティロールは、ユーザーやチームに割り当てることのできるアクセス設定となります。
ユーザーやチームがレコードに対して「作成・読み込み・書き込み・削除・追加・追加先・割り当て・共有 」を設定できます。
下図は、取引先企業 というエンティティに対して、それぞれのアクセス権を付与しているロールです。
また、アクセス権の強さは、自分の所有するレコードのみからエンティティのすべてのレコード(組織全体)まで設定することができます。
上図のキーはそれぞれ以下のような意味になります。
- 選択なし:アクセス権はありません
- ユーザー:自分が所有している(共有されている)レコードのみアクセス権あり
- 部署:自分の所属する部署のユーザーが所有するレコードまでアクセス権あり
- 部署配下:自分の所属する部署とその部署の下位部署に所属するユーザーが所有するレコードまでアクセス権あり
- 組織全体:すべてのレコードにアクセス権あり
例えば、下記の図のように、部署A – 部署B – 部署C という階層があり、社長はすべての取引先のデータを、マネージャーは自分の部署以下のデータ、社員は自分の所有するデータのみを読み取り可能にしたい場合、取引先のセキュリティ ロールの設定は下記のようになります。
上図のようなセキュリティ ロールの設定を、部署に紐づくチームもしくはユーザー自身に設定することで実現ができます。
セキュリティロールの特権は累積する
Dynamics 365 のセキュリティ ロールをユーザーやチームに複数設定した場合、その権限は累積します。つまり OR 条件になります。
例えば、ユーザーAに対して、以下のようなロールAとロールBが設定されている場合
ユーザーAは、取引先と担当者のすべてのレコードの読み取りと書き込みが可能になり、作成と削除は自身のレコードに行うことができます。
セキュリティロールの特権については公式ドキュメントもご参照ください。
セキュリティ ロール
セキュリティ ロールは、営業担当者などの異なるユーザーが異なる種類のレコードにどのようにアクセスできるかを定義します。 データへのアクセスを制御するために、既存のセキュリティ ロールを変更することも、新しいセキュリティ ロールを作成することも、各ユーザーに割り当てられるセキュリティ ロールを変更することもできます。 各ユーザーは複数のセキュリティ ロールを持つことができます。セキュリティ ロールの特権は累積されます。複数のセキュリティ ロールを持つユーザーには、すべてのロールで使用できるすべての特権が与えられます。
引用元:セキュリティ ロールおよび特権
セキュリティロールの作成
セキュリティロールの新規作成は、すべてのエンティティのアクセス権が “選択なし”(アクセス権がない状態)から作成することになります。この場合、すべてのエンティティに対してアクセス権を付与する必要があるうえ、どのエンティティにどの権限が必要であるかをかなり細かく把握する必要があるので、とても大変です。
そのため、新しくセキュリティロールを作成する場合の多くは、Dynamics 365 がすでに用意しているロールをコピーして、必要な箇所を編集する手順が効率的であるのでそちらを採用します。
まず「セキュリティ」で「セキュリティ ロール」をクリックします。
コピー元となるロールにチェックをいれます。「その他の操作」 から「ロールのコピー」 をクリックします。
「新しいロール名」に任意の名前を入力して「OK」をクリックします。
セキュリティロールのダイアログが開きますので、設定をしましょう。例えば「取引先企業」と「取引先担当者」の「削除」が “部署” となっています。
ここを “組織全体” に変更して、「保存して閉じる」で完了しました。これでこのロールを設定したユーザーやチームは、すべての企業と担当者レコードを削除できるようになります。
このようにセキュリティロールを作成していきましょう。
部署専用のセキュリティロール
セキュリティロールの「詳細」タブを開くと、部署を変更するフィールドがあります。
基本的に上位の部署で作成されたロールは、下位すべての部署にも複製されます。セキュリティロールの内部IDも異なります。
そのため、特定の部署のみ利用するロールを作成する場合は、まず下図のように部署を選択します。
そして、作成手順と同様にコピーしたいロールを選択して「ロールのコピー」で新しいセキュリティロールを作成します。
任意の名前を入力して作成して、「詳細」タブの部署を確認すると、このように指定した部署でロールを作成しています。
ルート部署を確認すると、先ほど作成したセキュリティロールはありません。
このように組織共通で利用するセキュリティロールはルート部署で作成して、部署単位でのセキュリティロールは部署で作成することで
不要なセキュリティロールが多く複製されることを防ぐことができます。
セキュリティ ロールの削除
作成したロールを削除することは可能です。「X」(削除)ボタンをクリックして削除します。ただ、削除したいロールがその他のコンポーネントに設定されていると削除できません。依存するコンポーネント (フォームやアプリなど) が存在する場合は、下記のようなエラーが出ます。
上図の「詳細」のリンクをクリックすると、セキュリティロールがどのコンポーネントで設定されているかを確認できますので、すべての依存関係を解除してから削除してください。
その他:ボタンの非表示
セキュリティ ロールでは、レコードへのアクセス権制御のほかに、一部のボタンの表示・非表示の権限も変更できます。例えば「Excel にエクスポート」 というボタンを非表示にしたいとします。
「経営管理」タブの 「Excel にエクスポート」 を “選択なし” にして保存します。
これで「Excel にエクスポート」というボタンは非表示になり使えなくなります。データをエクスポートさせたくない場合に有効な設定です。
ユーザーにセキュリティ設定をする
部署・チーム・セキュリティロールの作成を行いましたので、それぞれをユーザーに設定しましょう。
部署を設定する
まず「セキュリティ」で「ユーザー」をクリックします。
設定したいユーザーをクリックします。
まずは部署を設定します。「・・・」をクリックして「部署の変更」をクリックします。
作成した部署を選択したら「OK」をクリックして部署を変更しましょう。
ユーザーの部署が新しく設定されました。
セキュリティロールを設定する
ユーザーに新しく部署を設定すると、そのユーザーのセキュリティ ロールがリセットされ、セキュリティロールを設定するまでユーザーは Dynamics 365 へのアクセスができなくなります。そのため、部署を設定したら、次に必ずセキュリティロールを付与します。
上部のユーザー名横のからメニューを開きます。「セキュリティ ロール」があるのでクリックします。
「ロールの管理」をクリックします。
セキュリティロールを選択して「OK」をクリックします。
これでユーザーにセキュリティロールを割り当てました。複数のロールを割り当てることも可能です。
チームを追加する
ユーザーにチームを追加します。ユーザー画面に戻ります。既定では右端の「チーム」を確認するとすでに部署に関連した所有者チームが既定のチームになっています。
+ボタンをクリックします。検索ボックスでチームを検索します。
まずは所有者チームを追加しました。同じようにアクセスチームも追加します。
アクセスチームはビューのフィルターで表示されていないので検索ダイアログを開いて検索します。
「他のレコードの検索」をクリックして検索ダイアログを開き、「検索場所」を “すべてのユーザー アクセスチーム” とします。
すると作成しているアクセスチームが表示されるので選択したら「追加」をクリックします。
追加後もアクセスチームが表示されないので、ユーザーのフォームエディターを開き、この「チーム」のサブグリッドのプロパティを開き、ビューを「すべてのチーム」に変更して「編集」ボタンをクリックします。
右端の「タスク」より「フィルター条件の編集」をクリックして、「チームの種類」に “アクセス” を追加したら「OK」をクリックします。
これで「保存して閉じる」をクリックしておきます。
このままでは変更は反映されないので、「設定」の「ソリューション」を開きます。
そして「すべてのカスタマイズの公開」で公開処理を行います。
公開処理が終わると先ほどのユーザー情報を確認してください。アクセスチームも表示されています。
終わりに
長編になりましたが、ユーザーを追加した後のセキュリティ設定はこれでいったん終了です。基本的な設定になるのですがこれでユーザーのアクセス制御はできるようになりました。フィールド単位や階層でのセキュリティ設定を行うなど、高度なセキュリティ設定を行う方法もありますが、それはまた別の機会にご紹介したいと思います。