ORDA – アクセス許可 – ワンクリックでリソースへの Webアクセスを制限/許可する

Webプロセスにおいて 悪意のあるアクセスや未承認のユーザーからリソース (データ + ビジネスロジック) をワンクリックで保護する方法をご紹介します。

開発モードでは、Restrict access by default (デフォルトでアクセスを制限する) プロパティを FALSE に設定することで、データの使用や関数の呼び出しを制限することなく、コードの構成、データモデル、Qodly ページのアーキテクチャー、やテストに集中することができます。

ユーザープロファイルを実装する準備ができたら、このRestrict access by default プロパティを TRUE に設定するだけで、明示的に許可されていない限り、誰もあなたのデータやビジネスロジックにアクセスできないことを保証できます。

HDI: デフォルトでアクセスを拒否

概要

4D 20 以降、4D は未承認ユーザーからリソース (データ + ビジネスロジック) を保護するための、 強力で完全にカスタマイズ可能なシステムを提供しています。

このシステムは、カスタマイズ可能な粒度レベルを提供し、セッション内の権限の存在に基づいています。権限は、roles.jsonファイルで設定し、特定のリソース (データクラス、属性、関数) に対して特定のアクション (読み取り、作成、…) を実行する許可を与える必要があります。

権限は、スケーラブルWebセッションを使用する Webプロセス (REST リクエストリモートデータストアQodly アプリなど) に適用されます。

ユーザーがアプリケーションに入ることを許可されたとき、認証の実装によって適切な権限セッションに付与する必要があります。

その後、アプリケーションが Webクエストを受信すると、セッション内の権限の有無に関してチェックが行われ、許可されたアクションのみが実行可能となります。

リソースに対するアクションが許可されていない場合は権限エラーが発生します。

デフォルトのアクセス制限プロパティ

4D 21 では、roles.jsonファイルで新しいブール型プロパティ restrictedByDefault が利用可能になりました。

このプロパティにより、以下のリソースに対する Webアクセスに関するデフォルトの挙動を設定することができます:

 

これは、パーミッションが設定されていないリソースにのみ影響します。

FALSEの場合: リソースはデフォルトでアクセス可能です

別途パーミッションを設定しない場合、CreateReadUpdate…のアクションですべてのリソースがアクセス可能です。

パーミッションを設定している場合、パーミッション設定のないリソースについてのみ、すべてアクセス可能なままになります。

TRUE の場合: デフォルトでリソースへのアクセスが制限されます

別途パーミッションを設定しないかぎり、どのリソースにもアクセスできません。

パーミッションを設定している場合、パーミッション設定のないリソースについては、アクセス不可のままです。

Qodly の “Roles and Privileges” インターフェース

Qodly studioの Roles and privilegesインターフェースは、アプリのパーミッションを設定するためのユーザーフレンドリーな UI を提供します。この UI では、Restrict access by default プロパティを更新することができます。

以前の 4Dバージョン

アプリケーションを以前の 4Dバージョンで実行している場合は、restrictedByDefault FALSE に設定されているのと同等です。データストアに対してすべての全アクションの実行を許可する all 権限を作成することで、同様のセキュリティレベルを得ることができます。

そして、この all 権限をどのユーザーにも決して与えないようにします。

blank

新しいプロジェクトを開始する場合

新しいプロジェクトを作成すると、roles.jsonファイルは次のように設定されます:

blank

restrictedByDefault が False であるため、このまま新しい開発を開始することができます。制限に妨げられることなく、コード、フォームのデザイン、関数の呼び出しに集中し、データにアクセスすることができます。

ベストプラクティス

最適なセキュリティのために、ユーザープロファイルを実装する準備ができたら、 restrictedByDefault プロパティを True に設定し、以下のことを確実にするために権限を設定することをお勧めします:

– リソースが外部の悪意のあるアクセスから保護されていること

– 各ユーザーに対し、許可されたデータに対して承認されたアクションのみを実行する権限が与えられていること

以下の例では、データモデルは次のようになっています:

blank

 

 

 

 

 

 

 

 

roles.jsonファイルでは:

blank

その結果:

– SecretInfos データクラスへのアクセスは(読み取り、作成、更新などすべて)不可能です

– Peopleデータクラスを読み取るには viewPeople権限が必要で、Peopleデータクラスに対するその他のアクションは許可されません。

付属の HDI はこれを実証しています。

 

正確かつ適切なユーザープロファイルを処理しながら、アプリケーションとデータを保護するために、パーミッションの設定をお急ぎください。

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。