InterSystems公式
· 13 hr 前 9m read

IRIS 2025.2 から導入される IRISSECURITY データベースについて

InterSystems IRIS 2025.2 から、セキュリティデータが格納される IRISSECURITY データベースが導入されます。これまでセキュリティデータが格納されていた IRISSYS とは異なり、IRISSECURITY データベースは暗号化することが可能です。これにより機密データをより安全に保管することができるようになります。将来のバージョンでは、IRISSECURITYはミラーリングもサポートされる予定です。

このバージョンではあわせて、セキュリティ管理タスク用の %SecurityAdministrator ロールも導入されます。 

この記事でお伝えする変更は、継続的デリバリ (CD) および 拡張メンテナンス (EM) の両方に導入されます。つまり、バージョン 2025.2 (CD版、2025年7月23日リリース) および 2026.1 (EM版) 以降、InterSystems IRIS に IRISSECURITY データベースが含まれるようになります。そして該当バージョンにアップグレード時に、すべてのセキュリティデータが IRISSYS から IRISSECURITY に自動的に移動します。

InterSystems IRIS 2025.2 は 2025年7月23日リリース予定です。ただし、InterSystems IRIS for Health および Health Connect 2025.2 については、OAuth 設定データに影響を与えるミラーリングの問題の修正が完了するまで公開を延期します。

アップグレード前に 

新しく導入される IRISSECURITY によって、現在セキュリティデータを直接参照しているユーザが影響を受ける可能性があります。 

  • ユーザはセキュリティグローバルに直接アクセスできなくなります。代わりに、セキュリティクラスが提供するAPIを利用する必要があります。
  • OAuth2 グローバルを別のデータベースにマッピングできなくなります。
  • SQLセキュリティが無効化されている場合でも、ユーザはセキュリティテーブルに対するSQLクエリを実行出来なくなります。
  • システムデータベースは、事前定義されたシステムリソースを使用するようになります (事前定義されたシステムリソースはユーザ変更不可)。以前のバージョンで新しいリソースを作成してシステムデータベースに割り当てていた場合、アップグレード後、それらリソースは事前定義されたシステムリソースに置き換わります。 

以下のセクションでは、これら変更点の詳細と、過去バージョンから移行後の代替策をお伝えします。アップグレード前に、ユーザアプリケーションやマクロを確認してテストいただくことを強くお勧めします。 以下の注意点もご確認ください。

  • (直接グローバルにアクセスせず) 提供されるセキュリティAPI経由でセキュリティデータを管理すること
  • これら API を利用する必要な権限  (%DB_IRISSYS:R および Admin_Secure:U) を持っていること 

グローバルアクセス 

以前は、IRISSYSデータベースにセキュリティグローバルが格納されており、ユーザは以下の権限があればセキュリティデータにアクセスできました。 

  • %DB_IRISSYS:R: 直接またはセキュリティAPI経由で、セキュリティグローバルを読み取り可能
  • %DB_IRISSYS:RW: セキュリティグローバルを読み書き可能 
  • %DB_IRISSYS:RW および Admin_Secure:U: セキュリティAPI経由で、セキュリティを管理可能 

InterSystems IRIS 2025.2 では以下のようになります。 

  • ユーザはセキュリティグローバルに直接アクセスできなくなります。
  • %DB_IRISSYS:R と %Admin_Secure:U の両方とも、(提供されたセキュリティAPIを経由して) セキュリティデータにアクセスするため、かつ、セキュリティクラスを通してセキュリティを管理するための、必要最小限の権限になります。
  • 一般的なセキュリティ管理には、新しい %SecurityAdministrator ロールをご利用いただけます。
  • セキュリティデータへの読み取り専用アクセス (これまでは %DB_IRISSYS:R が相当) が削除されました。

グローバルデータのロケーション

InterSystems IRIS 2025.2 では、以下のセキュリティグローバルデータが、IRISSYS から、IRISSECURITY に格納される ^SECURITY グローバルに移動されました。

  • ^SYS("SECURITY")
  • ^OAuth2.*
  • ^PKI.*
  • ^SYS.TokenAuthD

移動した重要なグローバルは以下のとおりです。関連セキュリティクラス、以前のロケーション、新しいロケーションを掲載しております。

セキュリティクラス 以前のロケーション (IRISSYS) 新しいロケーション (IRISSECURITY)
N/A ^SYS("Security","Version") ^SECURITY("Version")
Security.Applications ^SYS("Security","ApplicationsD") ^SECURITY("ApplicationsD")
Security.DocDBs ^SYS("Security","DocDBsD") ^SECURITY("DocDBsD")
Security.Events ^SYS("Security","EventsD") ^SECURITY("EventsD")
Security.LDAPConfigs ^SYS("Security","LDAPConfigsD") ^SECURITY("LDAPConfigsD")
Security.KMIPServers ^SYS("Security","KMIPServerD") ^SECURITY("KMIPServerD")
Security.Resources ^SYS("Security","ResourcesD") ^SECURITY("ResourcesD")
Security.Roles ^SYS("Security","RolesD") ^SECURITY("RolesD")
Security.Services ^SYS("Security","ServicesD") ^SECURITY("ServicesD")
Security.SSLConfigs ^SYS("Security","SSLConfigsD") ^SECURITY("SSLConfigsD")
Security.System ^SYS("Security","SystemD") ^SECURITY("SystemD")
Security.Users ^SYS("Security","UsersD") ^SECURITY("UsersD")
%SYS.PhoneProviders ^SYS("Security","PhoneProvidersD") ^SECURITY("PhoneProvidersD ")
%SYS.X509Credentials ^SYS("Security","X509CredentialsD") ^SECURITY("X509CredentialsD ")
%SYS.OpenAIM.IdentityServices ^SYS("Security","OpenAIMIdentityServersD") ^SECURITY("OpenAIMIdentityServersD")
OAuth2.AccessToken ^OAuth2. AccessTokenD ^SECURITY("OAuth2.AccessToken ")
OAuth2.Client ^OAuth2.ClientD ^SECURITY("OAuth2.Client")
OAuth2.ServerDefinition ^OAuth2.ServerDefinitionD ^SECURITY("OAuth2.ServerDefinitionD")
OAuth2.Client.MetaData ^OAuth2.Client.MetaDataD ^SECURITY("OAuth2.Client.MetaDataD")
OAuth2.Server.AccessToken ^OAuth2.Server.AccessTokenD ^SECURITY("OAuth2.Server.AccessTokenD")
OAuth2.Server.Client ^OAuth2.Server.ClientD ^SECURITY("OAuth2.Server.ClientD")
OAuth2.Server.Configuration ^OAuth2.Server.ConfigurationD ^SECURITY("OAuth2.Server.ConfigurationD")
OAuth2.Server.JWTid ^OAuth2.Server.JWTidD ^SECURITY("OAuth2.Server.JWTidD")
OAuth2.Server.Metadata ^OAuth2.Server.MetadataD ^SECURITY("OAuth2.Server.MetadataD")
PKI.CAClient ^PKI.CAClientD ^SECURITY("PKI.CAClient")
PKI.CAServer ^PKI.CAServerD ^SECURITY("PKI.CAServer")
PKI.Certificate ^PKI.CertificateD ^SECURITY("PKI.Certificate")
%SYS.TokenAuth ^SYS.TokenAuthD ^SECURITY("TokenAuthD")

OAuth2 グローバルマッピング

これまでは OAuth2 グローバルを別のデータベースにマッピングし、OAuth2 設定をミラーリングすることが出来ました。

InterSystems IRIS 2025.2 では、OAuth2 グローバルをマッピングできなくなりました。また IRISSECURITY はミラーリングできません。そのため現在 OAuth2 情報をミラーリングされていた場合、以下のいずれかの回避策をご利用ください。

  • プライマリとフェイルオーバの両方で手動で変更する
  • プライマリから設定をエクスポートし、フェイルオーバ側にインポートします。

OAuth2 構成データのエクスポート 

set items = $name(^|"^^:ds:IRISSECURITY"|SECURITY("OAuth2"))_".gbl"
set filename = "/home/oauth2data.gbl"
do $SYSTEM.OBJ.Export(items,filename)

OAuth2 構成データのインポート

do $SYSTEM.OBJ.Import(filename)

SQL Security 

これまでは、SQL セキュリティは CPF パラメータ DBMSSecurity によって制御されていました。もし DBMSSecurity が無効であれば、SQL権限のあるユーザは、データベース内のすべてのセキュリティテーブルに任意のクエリを実行できました。 

InterSystems IRIS 2025.2 では以下のようになります。

  • CPF パラメータ DBMSSecurity は、以下のシステムワイドの SQL セキュリティプロパティに置き換わりました。 (管理ポータル > システム管理 > セキュリティ > システム・セキュリティ > システムワイドセキュリティパラメータ > SQLセキュリティを有効にする
  • セキュリティ・テーブルは、詳細および一覧を取得する API を通じてのみアクセス可能となります。APIを利用するには、SQLセキュリティが無効になっている場合でも %DB_IRISSYS:R と %Admin_Secure:U の両方の権限が必要となります。 

たとえば、ロールの一覧を取得するには、Security.Roles テーブルに直接クエリを実行できなくなります。代わりに、以下のように Security.Roles_List() クエリを使用します。

SELECT Name, Description FROM Security.Roles_List()

IRISSECURITY の暗号化

IRISSECURITY を暗号化する手順は以下のとおりです。 

  1. 暗号化キーを作成します。管理ポータル > システム管理 > 暗号化 > 新しい暗号化キーファイルを作成
    • キーファイル – 暗号化キーファイル名 
    • 管理者名 – 管理者の名前 
    • パスワード – キーファイルのパスワード 
  2. 暗号化キーをアクティベートします。管理ポータル > システム管理 > 暗号化 > データベース暗号化 > キー有効 から、上記で作成した キーファイル管理者名パスワード を指定します。 
  3. 管理ポータル > システム管理 > 暗号化 > データ要素暗号化
  4. 起動時にキー有効化 ドロップダウンメニューから、キー有効化メソッドを選択します。「インタラクティブ」キー有効を強くお勧めします。
  5. IRISSECURITY データベース暗号 ドロップダウンから 「はい」を選択します。
  6. 暗号化を有効にするため、システムを再起動します。 

%クラスへのアクセスルール

InterSystems IRIS の以前のバージョンでは、ウェブ・アプリケーション用の%クラスにアクセスするには、セキュリティグローバルに値をセットする必要がありました。InterSystems IRIS 2025.2 では、管理ポータルまたは ^SECURITY ルーチンを利用して、この設定を行うことができます。

管理ポータル 

管理ポータルを使って %クラスへのアクセスルールを設定する手順は以下のとおりです。 

  1. 管理ポータル > システム管理 > セキュリティ > アプリケーション > ウェブ・アプリケーション
  2. 設定したいアプリケーションを選択
  3. パーセントクラスアクセス タブから以下のオプションを設定
    • タイプ: このルールを、指定した%クラス (AllowClass) だけに対するアクセスに適用するか、指定した接頭辞を含むすべてのクラス (AllowPrefix) へのアクセスに適用するか
    • クラス名: アプリケーションにアクセスさせる %クラスまたは接頭辞 
    • アクセス許可: 指定された %クラスまたはパッケージへのアクセスをアプリケーションに与えるかどうか
    • すべてのアプリケーションへのアクセスを追加: すべてのアプリケーションにこのルールを適用するか

^SECURITY 

^SECURITY ルールを使ってクラスへのアクセスルールを設定する手順は以下のとおりです。

  1. %SYS ネームスペースで ^SECURITY ルーチンを実行
    DO ^SECURITY
  2. オプション 5, 1, 8 を順に選択し、1 を選択して class access rule プロンプトに入る 
  3. 以下のように指定
    • Application? – アプリケーション名 
    • Allow type? – このルールを、特定のクラスにアクセスできるようで起用するか (AllowClass)、指定した接頭辞を含むすべてのクラスに適用するか (AllowPrefix
    • Class or package name? – アプリケーションにアクセスさせるクラスまたは接頭辞
    • Allow access? – 指定クラスまたはパッケージへのアクセスをアプリケーションに許可するかどうか
@Kevin Xuさんが書いた元の記事へ
ディスカッション (0)0
続けるにはログインするか新規登録を行ってください