明示的なロール
内部ユーザーと外部ユーザーの両方に、インスタンスへのアクセス権を与えることができます。ただし、両方のタイプのユーザーに同レベルのアクセス権を持たせない方が良い場合もあります。セキュリティを追加するためには、ユーザー全員に少なくとも 1 つのロールを割り当てて、インスタンスが内部ユーザーと外部ユーザーを区別できるようにする必要があります。
Parisリリース時点では、ユーザーは、明示的なロール (snc_internal および snc_external) をともに持つことはできません。グループとロールには、そのようなグループまたはロールにアサインされたグループメンバーまたはユーザーが両方のロールを自動的に持つようになるため、両方のロールを包有することはできません。Now Platform では、このようなシナリオを作成する操作はすべて中断されます。
- 外部とマークされていないスクリプト済み REST API リソース。
- snc_external ロールまたは公開ロールを継承するロールがないテーブル。
- snc_external ロールまたは snc_external ロールを継承するロールへのアクセスの許可がないプロセッサーや UI ページなど、レコードタイプ以外のリソース。
- プラットフォームアナリティクス ダッシュボード
snc_internal ロールを昇格したロールとしてマークしないでください。内部ユーザーがインスタンスにアクセスできなくなります。
明示的ロールプラグイン
明示的ロールプラグインが有効になっている場合:
- すべての ユーザーは、内部リソースにアクセスするための snc_internal ロール、または外部リソースにアクセスするための snc_external ロールを持つ必要があります。いずれの明示的もロールを持たないユーザーは、公開リソースにのみアクセスできます。
- 既存のユーザー全員に、snc_internal ロールが自動的にアサインされます。このロールでは、既存のアクセスレベルやシステムの動作は変更されません。その代わり、内部ユーザーと外部ユーザーを区別するためのカテゴリが提供されます。内部ユーザーは全員、プラグインが有効化される前と同レベルのアクセスを維持します。ヒント:ユーザーの既存の機能を変更しないようにするために、明示的なロールプラグインが有効になると、インスタンス内の既存ユーザー全員に snc_internal ユーザーロールがアサインされます。既存ユーザーには、明示的なロールプラグインが有効になる前に追加された外部ユーザーも含まれます。明示的ロールプラグインが有効になった後、明示的ロールプラグインの有効化以前に追加されたすべての外部ユーザーに対して、以下を実行します。
- snc_internal ロールを削除します。
- snc_external ロールを追加します。
- 新しく作成されたユーザーは、最初にインスタンスにログインしようとした時点で snc_internal ロールが自動的にアサインされますが、snc_external ロールが明示的にアサインされている場合は例外です。新しいユーザーがインスタンスに最初にログインする前に snc_external ロールを追加すると、外部ユーザー権限を提供することができます。 重要:
メインテナンス期間中またはログインしているユーザーが少ないときに、このプラグインを有効にします。プラグインが有効化されているときに現在ログインしているユーザーには、snc_internal ロールは動的にアサインされません。むしろ、ユーザーは snc_internal ロールをアサインするために、ログアウトして再度ログインする必要があります。プラグインが有効化されると、snc_internal および snc_external ロールをいつでも追加または削除して、ユーザーの権限を変更できます。
プラグインが有効になると、ユーザーがログインするたびに、アカウントに snc_internal ロールが付与され (ない場合)、snc_external ロールが付与されます。これには、代理操作を介してログインしたユーザーが含まれます。
- ロール要件を持たないすべての既存の ACL に、snc_internal ロールが自動的にアサインされます。既存の ACL とユーザーの両方に snc_internal ロールがアサインされているため、既存のアクセスレベルは変更されません。
- ロール要件を持たない新規作成 ACL には、snc_internal ロールが自動的にアサインされます。このロールは、新規作成 ACL にロールがアサインされている場合にはアサインされません。
- Type=script のすべての既存のプロセッサー [sys_processor] レコードまたは新しく作成されたプロセッサー [sys_processor] レコードについては、フィールドが空の場合、snc_internal ロールが [ロール] フィールドに自動的に追加されます。
- UI ページへのアクセスを内部ユーザーに制限する場合、プラグインによって ui_page タイプの* ACL に snc_internal ロールが自動的に割り当てられます。
- プロセッサーへのアクセスを内部ユーザーに制限する場合、プラグインによって ui_page タイプの* ACL に snc_internal ロールが自動的に割り当てられます。
- 外部ユーザーがインスタンスにアクセスするためには、少なくとも snc_external ロールを取得する必要があります。このロールは、外部ユーザーに手動で付与する必要があります。レコードへのアクセスは、ACL を通じて付与されます。
明示的なロールプラグインが有効であるかどうかにかかわらず、システムアップデートセットをインスタンス間で移動しないでください。詳細については、「システムアップデートセット」を参照してください。
glide.security.explicit_roles.do_not_fix の動作
glide.security.explicit_roles.do_not_fix は、snc_internal への変更が調整されました。snc_internal ロールは、メモリ内と sys_user_has_role 内の両方で同じになりました。glide.security.explicit_roles.do_not_fix の新しい動作は次のとおりです。| 値 | 結果 |
|---|---|
| False | メモリと sys_user_has_role の両方で、snc_internal ロールを追加します。 |
| True | メモリまたは sys_user_has_role で、snc_internal ロールを追加しません。 |
glide.security.explicit_roles.ignore.snc_internal.exclude_role_list プロパティを使用します。 glide.security.explicit_roles.do_not_fix の動作に戻すには、glide.security.explicit_roles.do_not_fix_in_memory プロパティを使用します。外部ユーザーへのテーブルアクセスの提供
snc_external ロールを継承するロールをテーブルに追加することで、外部ユーザーにテーブルへのアクセス権を付与できます。詳細については、「Provide external users access to a table」を参照してください。
hasRoles() メソッド
hasroles() メソッドはまだ利用できますが、 Geneva リリースでは廃止されます。代わりに hasRole(ロール名) メソッドを使用します。
hasRoles() メソッドを使用する場合は、次のような変更に注意してください。- この方法では、ロールをチェックする際にデフォルトの snc_internal ロールが自動的に除外されます。これは、ユーザーが snc_internal ロールしか持っていない場合でも、
hasRoles()メソッドが false を返すことを意味します。 - ユーザーが snc_external ロールを持っている場合、インスタンスは外部ユーザーがロールを持たないと判断するため、このメソッドは false を返します。
相互除外:snc_external 対 snc_internal
- ユーザー Abel Tuter に snc_internal ロールをアサインします。
- ユーザー Abel Tuter に snc_external ロールをアサインします。
結果:Abel Tuter は snc_internal ロールを持つため、snc_external ロールの追加に失敗しました。
例:グループに両方の明示的なロールを追加 (直接衝突):
- 現在グループに割り当てられている明示的なロールがないテストグループと呼ばれるグループを検討してください。
- テストグループにアベル、担当 tuter を追加します。
- テストグループに snc_external ロールを追加します。
結果:Abel Tuter はすでに snc_internal ロールを持っており、両方のロールを持つことはできないため、snc_external ロールの追加に失敗しました。
- ユーザー Abel Tuter に snc_internal ロールをアサインします。
- 現在グループに割り当てられている明示的なロールがないテストグループと呼ばれるグループを検討してください。
- テストグループにアベル、担当 tuter を追加します。
- snc_external ロールをテストグループに追加します。
結果:Abel Tuter はグループメンバーシップを通じて snc_external ロールを継承するため、グループに snc_external ロールを追加することはできません。両方の明示的なロールが同じユーザーに割り当てられます。これは許可されていません。
その他の例については、次のテーブルを参照してください。
| ロール | 試行したアクション | 結果 |
|---|---|---|
| 直接衝突 | ||
| ユーザーは snc_internal ロールを持っています。 | snc_external ロールを追加します。 | アクションが中断されました。 |
| ユーザーは snc_external ロールを持っています。 | snc_internal ロールを追加します。 | アクションが中断されました。 |
| ユーザーに明示的なロールがありません。 | snc_external と snc_internal の各ロールを追加します。 | ロールが追加されました。 |
| ユーザーは、両方の明示的なロールを持ちます (衝突が存在します) 。 | ロールを持たないグループにユーザーを追加してください。 | アクションが中断されました。 |
| どのユーザーにも関連付けられていないロールに、snc_internal ロールが含まれています。 | snc_external ロールを追加します。 | アクションが中断されました。 |
| どのユーザーにも関連付けられていないロールには、snc_external ロールが含まれています。 | snc_internal ロールを追加します。 | アクションが中断されました。 |
| ロールには、明示的なロールが含まれています (衝突が存在します) 。 | ロールをユーザー、ロール、またはグループに追加します。 | アクションが中断されました。 |
| メンバーを含まないグループに snc_internal ロールが割り当てられています。 | snc_external ロールを追加します。 | アクションが中断されました。 |
| メンバーを含まないグループに snc_external ロールが割り当てられています。 | snc_internal ロールを追加します。 | アクションが中断されました。 |
| メンバーを含まないグループにはロールはありません。 | snc_external と snc_internal の各ロールを追加します。 | ロールが追加されました。 |
| 間接衝突 | ||
| 衝突を包有するロール |
|
アクションが中断されました。 |
| 衝突を包有しないロール |
|
このロールは、ユーザーと Test ロールの両方に追加されます。 |
| 衝突を包有するグループ |
|
アクションが中断されました。 |
| 衝突を包有しないグループ |
|
ロールが親グループ、子グループ、およびユーザーに追加されます。 |
| グループとロールに衝突が包有されています | Test Group 1 (Test Group 2 の親) に contains_external を追加します。 | Test Group 1 と Test Group 2 はともに contains_external を取得しますが、snc_external ロールを明示的に取得することはできません。 |
| Test Group 1 の子である Test Group 2 に snc_internal ロールを追加します。 | アクションが中断されました。 | |
| グループの親の変更とグループの包有 |
|
アクションが中断されました。 同じ想定で、既にネストされたグループに対して手順を繰り返します。 |
アクションの中断の原因がエラーメッセージに表示され、別の試行が成功する前に対応する必要があります。
個々のユーザーに明示的ロールを追加するなど、直接的なケースでは、ユーザーがどの明示的ロールを持つ必要があるかを確認します。ユーザーが不適切な明示的なロールを持つ場合は、まず削除し、次に正しい明示的なロールを追加する必要があります。
グループに明示的なロールを追加するなど、間接ケースでは (グループメンバーに両方の明示的なロールがアサインされるようにするために)、ユーザーをグループに含める必要があるかどうかを評価します。グループ階層とロールの包含を通じた継承を含め、グループに明示的なロールを指定する必要があるかどうかも決定します。
Now Platform では、最初に発生した衝突の可能性のみがレポートされることに注意してください。修正後も繰り返し試行が失敗し、毎回新しい根本原因が発生する場合は、関連するユーザー/グループ/ロールの相互依存関係をより広範に再評価してください。グループとロールの包有がどのように構成されているかを再考することをお勧めします。
明示的なロールを要求する
Now Support サービスカタログから明示的なロールプラグイン (com.glide.explicit_roles) を要求して明示的なロールをアクティブ化します。
始める前に
必要なロール:admin