システム間IRIS DBMSのセキュリティ向上


システム間アイリスと最初に作業を開始すると、最小限のセキュリティレベルでシステムをインストールするのが一般的です.パスワードを数回入力する必要がありますが、これは簡単に開発サービスとWebアプリケーションを最初に取得しているときに動作するようになります.そして、時々、最小限のセキュリティは、開発されたプロジェクトまたは解決策を展開するのにより便利です.
それでも、あなたが開発からプロジェクトを移行する必要があるとき、非常に可能性が高いインターネット環境に、そして、それが生産に配備される前に、最大のセキュリティ設定(すなわち、完全にロックダウンされる)でテストされる必要があるとき、瞬間が来ます.そして、それは我々がこの記事で議論するものです.
システム間のDBMSセキュリティ問題、アンサンブル、およびアイリスのより完全なカバレッジのために、あなたは私の他の記事を読みたいかもしれません.Recommendations on installing the InterSystems Caché DBMS for a production environment.
Inter系IRISのセキュリティシステムは、異なる種類のセキュリティ設定を適用するという概念に基づいています:ユーザ、ロール、サービス、リソース、特権、およびアプリケーション.

ユーザーの役割を割り当てることができます.ユーザー、ロールはリソース、データベース、サービス、アプリケーションの権限を持つことができます.ユーザーとロールはSQLデータベースにあるSQLテーブルにもSQL権限を持つことができます.

どのようにセキュリティレベルが異なるか


システム間アイリスをインストールするときは、セキュリティレベルを選択できます.レベルは、ユーザーの参加の程度、利用可能な役割とサービス、およびサービスとアプリケーションの認証方法の構成で異なります.詳しくは、Preparing for InterSystems Security システム間アイリスガイドをインストールする準備のセクション.
ドキュメントでは、各レベルのセキュリティ設定を示す以下の表が見つかります.システム管理ポータルインターフェイスの設定を変更できます.

初期ユーザーセキュリティ設定


セキュリティ設定
最小
標準
ロックダウン
パスワードパターン
3.32 ANP
3.32 ANP
8.32 ANP
不活発な限界
0
90日
90日
システムを有効にする
はい
はい
なし
Unknownuserに割り当てられたロール
% all
なし
なし

初期サービスプロパティ


サービスプロパティ
最小
標準
ロックダウン
使用許可はパブリックです
はい
はい
なし
認証が必要です
なし
はい
はい
有効サービス
大部分
いくつか
フェリー

サービスの初期設定


サービス
最小
標準
ロックダウン
% ServiceHeight結合
有効
有効
障害者
***% % CSPファイル
有効
有効
有効
% ServiceCount cachedirect
有効
障害者
障害者
% service
有効
障害者
障害者
% ServiceLand Comport
障害者
障害者
障害者
% ServiceCountコンソール
有効
有効
有効
% EECP
障害者
障害者
障害者
% ServiceRank msmactivate
障害者
障害者
障害者
% serviceモニタ
障害者
障害者
障害者
%シャドウシャドウ
障害者
障害者
障害者
% ServiceThank telnet
障害者
障害者
障害者
% ServiceCard端末
有効
有効
有効
% ServiceCountのリンク
障害者
障害者
障害者
*システム間のアイリスに対しては、% ServiceCount CSPは% ServiceCount WebGatewayを適用します.
使用されるサービスは、異なるオペレーティングシステムでわずかに異なります.

どのようにセキュリティを向上させることができます


それぞれの有効なサービスについては、認証されていない、パスワード、kerberos、または委任された適切な認証方法を選択する必要があります.
また、システムで使用されないWebアプリケーションを無効にする必要があります.有効になっているWebアプリケーションでは、認証されたパスワード、Kerberos、委任、ログイン、またはcookieを使用して、正しい認証方法を選択する必要があります.
もちろん、プロジェクトが顧客の要件に従って機能するように、各プロジェクトとソリューションのセキュリティ設定を選択します.そして、これは、ユーザーが実際に彼らの仕事を成し遂げることができるほど十分に便利なシステムを保つことの間のバランスです.ご存知のように、最も安全なシステムは、障害のあるシステムです.
手動でシステムのセキュリティレベルを1回以上増やす必要がある場合は、これらの問題を解決するためにソフトウェアモジュールを書く必要があります.
実際には、システム間のオープンExchangeは、セキュリティを向上させることができるロックアッププログラムがあります.インターシステムのリポジトリ内のプログラムのソースコードを見つけますisc-apptools-lockdown ページ.
ここではロックダウンプログラムは何です.

まず、プリインストールされたユーザのパスワードを変更します。

  • 管理
  • (株)
  • IAM
  • スーパーユーザ
  • 不明
  • _アンサンブル
  • _システム
    ○○○○○2番目では、すべてのサービスを無効にする.
  • %%ウェブゲートウェイ
  • %コンソールコンソール
  • %サービスログイン
  • %サービスターミナル
    次に、以下を含むすべてのWebアプリケーションのパスワード保護を設定します.
  • /CSP/ensデモ
  • /サンプル集
  • /ユーザ名
  • /スタジオ/ユーザテンプレート
  • /ブックマーク
  • /関連キーワード:CSP
  • /スタジオ・ルール
  • /スタジオ/テンプレート
    最後に、システム全体のセキュリティパラメータを設定します.
  • パスワードの複雑さ
  • 90日間のユーザ非活動性の制限
  • 監査及びすべてのセキュリティ関連事象
    ダウンロードしてシステムにロックダウンプログラムをインストールできますLockDown.cls Githubから.次に端末モードで次のコマンドを入力します.
  • USER>zn “%SYS”
    %SYS>do $system.OBJ.Load("/home/irisusr/LockDown.cls","ck")
    
    それとも、以下のコマンドでZPMバッチマネージャをパブリックレジスタからインストールできます.
    USER>zn “%SYS”
    %SYS> zpm “install isc-apptools-lockdown”
    

    ロックダウンを行う


    Lockdownを実行する前に、バックアップを実行することを強くお勧めします.
    ロックダウンプログラムは% sys領域から実行しなければなりません.すべてのプリインストールされたユーザーのパスワードを変更したくない場合は、最初のパラメータを空にします.
    IRI Studio、Atelier、またはVsCodeを使用してプログラムやクラスを編集する機能を維持する場合は、% ServiceHand結合サービスを無効にしないでください.この動作を保証するためには、バインド引数を1に設定する必要があります.以下に例を示します:do ##class(App.Security.LockDown).Apply("New Password 123",.msg,1)このモジュールはまた、システムのパスワードが侵害されている場合に便利ですし、ロックアップを実行せずに、すべてのプリインストールされたアカウントの交換が必要な機能が含まれています.次のように実行できます.do ##class(App.Security.LockDown).Change Password("New Password 123", "Admin,CSPSystem,IAM,SuperUser,Unknown User, _Ensemble,_SYSTEM")ほとんどの場合、ロックダウンを実行した後、アプリケーションまたはプロジェクトが動作を停止します.修正するには、セキュリティ設定を元の状態に戻す必要があります.これは、管理ポータルインターフェイス(セキュリティセクション)またはプログラムを介していずれかで行うことができます.

    ロックダウン後のセキュリティ設定の変更


    Lockdown後、Webアプリケーションがパスワード以外の認証メソッドを使用している場合は、それらを有効にする必要があります.
    私は、ソフトウェアモジュールを走らせることを提案しますzpm-registry-test-deployment , これは、ZPMレジストリプロジェクトのロックダウンを使用する例です.
    次のコードは、インストールの最後に適用されます.プロジェクトは、セキュリティの最小レベルで虹彩にインストールされました.以下にコードが何をすべきかを示します.
  • すべてのプリインストールされたユーザーのパスワードを変更します.
  • このプロジェクトで使用されていないすべてのサービスを無効にします.
  • システム上のすべてのアプリケーションのパスワード保護を有効にします.
  • レジストリに新しいパッケージを発行する権限を持つ新しいユーザーを作成します.このユーザーは、IrisAppデータベースのプロジェクトテーブルに書き込み権限を持たなければなりません.
  • 新しいユーザを作成します
    set tSC= ##class(App.Security.LockDown).CreateUser(pUsername, "%DB_"_Namespace, pPassword, "ZMP registry user",Namespace)
    If $$$ISERR(tSC) quit tSC
    write !,"Create user "_pUsername
    
    新しい権限のないユーザーに権限を追加します.
    set tSC=##class(App.Security.LockDown).addSQLPrivilege(Namespace, "1,ZPM.Package", "s", "UnknownUser")
    set tSC=##class(App.Security.LockDown).addSQLPrivilege(Namespace, "1,ZPM.Package", "s", pUsername)
    set tSC=##class(App.Security.LockDown).addSQLPrivilege(Namespace, "1,ZPM.Package_dependencies", "s", pUsername)
    set tSC=##class(App.Security.LockDown).addSQLPrivilege(Namespace, "1,ZPM_Analytics.Event", "s", pUsername)
    set tSC=##class(App.Security.LockDown).addSQLPrivilege(Namespace, "9,ZPM.Package_Extent", "e", pUsername)
    set tSC=##class(App.Security.LockDown).addSQLPrivilege(Namespace, "9,ZPM_Analytics.Event_Extent", "e", pUsername)
    If $$$ISERR(tSC) quit tSC
    write  !,"Add privileges "
    
    lockdownプログラムを実行します.
    set tSC= ##class(App.Security.LockDown).Apply(NewPassSys)
    If $$$ISERR(tSC) quit tSC
    
    Change the settings for the web app so that an unknown user can log in:
    set prop("AutheEnabled")=96
    set tSC=##class(Security.Applications).Modify("/registry",.prop)
    If $$$ISERR(tSC) quit tSC
    write !,"Modify /registry "
    
    Change the settings for the %service_terminal service, changing the authorization method to Operating System, Password:
    set name="%service_terminal"
    set prop("Enabled")=1
    set prop("AutheEnabled")=48 ; Operating System,Password
    set tSC=##class(Security.Services).Modify(name,.prop)
    If $$$ISERR(tSC) quit tSC
    write !,"Modify service terminal"
    

    ラッピング


    この記事では、なぜあなたがシステムのセキュリティレベルを増加させたいのか、そしてどのようにプログラムを実行するかについて議論しました.
    我々は最初にシステム内のすべてを閉じた方法(すなわち、我々は最大のセキュリティレベルを設定)を使用しました.その後、プロジェクトに機能するために必要なサービスとアプリケーションを開くことでセキュリティを緩和しました.私は、他の方法とベストプラクティスがあると確信しています、そして、私はコミュニティによってこの記事の議論の一部として彼らについて聞きたいです.