IBM i 7.6 プログラム資料説明書を読む その3　セキュリティ関連#1

[こちら](https://qiita.com/gomAnomalocaris/items/736bbe5987aad621169f)の記事の続きです。

## セキュリティ関連

セキュリティ関連はここしばらく（特にIBM i 7.5以降？）厳格化が進んでいるように思います。7.6でも DSPSECAコマンド、QSYRTVSA API、IBM i サービス QSYS2.SECURITY_INFO の実行に*SECADM または *AUDIT 特殊権限が必要、/etc/nfsの所有者がQSYSに変更、*PUBLICは*EXCLUDEに設定変更される等、細かく見直しが入っています。

詳細は書くとキリがないので必要に応じて確認いただくことでお願いします。

### 新しいシステム提供ユーザープロフィール4つを追加 QSECOFR_NC, QSYSOPR_NC, QPGMR_NC, QUSER_NC

IBM i 7.6 でQPGMR_NC、QSECOFR_NC、QSYSOPR_NC、QUSER_NC という 4 つの新しいシステム提供ユーザープロファイルが追加されました。これらは対応するユーザープロファイル（QPGMR、QSECOFR、QSYSOPR、QUSER）と同じ権限を持ちます。

**・新しいプロファイルはパスワードなしで出荷され、変更できません。**
4つの新しいユーザープロファイルはパスワードが変更できないため多要素認証 (MFA) は有効にできず機能ID QIBM_RUN_UNDER_USER_NO_AUTH アクセスが必須になります。このため、これらのユーザーは、MFA または機能使用制限によって制限されるインターフェース（パスワードに特別な値を指定したプロファイルハンドルの取得や、USERパラメーターが現在実行中のユーザーと異なるSBMJOBコマンド等で使用できます。

システム提供ジョブ等の多くがこれら新しいユーザープロファイルでの実行に変更されました。既存のシステムでQPGMR、QSECOFR、QSYSOPR、QUSER ユーザープロファイルのオブジェクトに権限が付与されている場合などは、新しい4つのユーザープロファイルにも同じ権限が必要になる場合があります。
***追加された4つの新しいユーザープロファイルに対して、基準のユーザープロフィールを参照して同じ権限を付与するコマンド例は下記です。***
例)
```
GRTUSRAUT USER(QUSER_NC) REFUSER(QUSER)
```

### システム関連機能実行に必要な権限の変更

冒頭の例以外にも多数記載があります。全部は網羅できないのでいくつかあげます。

・QSYS2.SECURITY_INFO ビューの呼び出し元には、*SECADM または *AUDIT 特殊権限が必要。十分な権限がない場合は、SQL エラー SQLCODE -443、SQLSTATE '42502' が返されます。(前リリースでは特別な権限は不要）

・QSYS2.DATABASE_MONITOR_INFO ビューは*ALLOBJまたは QIBM_DB_SQLADM または QIBM_DB_SYSMON 関数使用 ID に対する権限が必要に変更。十分な権限がない場合は、SQL エラー SQLCODE -443、SQLSTATE '42502' が返されます。(前リリースでは特別な権限は不要）

・以下のコマンド実行にはQIBM_IOSYSCFG_VIEW機能使用IDまたは*IOSYSCFG特殊権限のいずれかが必要にへんこうされました。DSPCFGL, DSPCOSD, DSPCTLD, DSPDEVD, DSPLIND, DSPMODD, DSPNTBD, DSPNWDS, RTVCFGSRC, WRKCFGL, WRKCFGSTS, WRKCOSD, WRKCTLD, WRKDEVD, WRKLIND, WRKMLBSTS, WRKMODD, WRKNTBD, WRKNWSD

・QDCCCFGD API には *IOSYSCFG 特殊権限が必要

・以下のAPI では、QIBM_IOSYSCFG_VIEW 機能使用 ID または *IOSYSCFG 特殊権限のいずれかが必要
QDCCCFGD, QDCLCFGD, QDCRCFGS, QDCRCTLD, QDCRDEVD, QDCRLIND, QDCRNWSD

・以下は機能が提供されないため、「機能がサポートされていません」というメッセージを返すように変更されました。
CRTDEVDKT, CHGDEVDKT, DSPCNNL, DSPIPXD, DSPNWID, WRKCNNL, WRKIPXD, WRKNWID

・以下のコマンドは*IOSYSCFG特殊権限を必要が必要になります。
ADDRDBDIRE, RMVRDBDIRE, CHGRDBDIRE, CRTDDMF, CHGDDMF, DLTF(DDMFにおいて）でSYSTEM(*RMT)またはSYSTEM(*FILETYPE)が指定されている場合のみ

・以下のコマンドで、PF4キーで既存のパラメーター値を確認するために、*IOSYSCFG 特殊権限または QIBM_IOSYSCFG_VIEW 関数の使用権限のいずれかが必要
CHGDDMCPA, CHGRDBDRIE, CHGDDMF

・*IOSYSCFG特殊権限またはQIBM_IOSYSCFG_VIEW関数の使用権限を必要とするシステム値とネットワーク属性は以下。権限が無いと*NOTAVL を返します。
QCFGMSGQ, QSSLCSL, QSSLCSLCTL, QSSLPCL
JOBACN, DDMACC, PCSACC, ALWADDCLU

・STRJRNPFコマンドはファイルに対する*READ権限が必要に変更。これはセキュリティ強化、ENDJRNPFコマンドと整合性持たせるための変更。（従来は*OBJMGTおよび*OBJOPR権限だけでOK）

・CHGFTPAコマンドは従来の*IOSYSCFG特殊権限のほかに、QIBM_IOSYSCFG_VIEW機能使用IDが許可されていれば使用可能に。

・以下のコマンドのPUBLIC権限が *USE->*EXCLUDEに変更されました。
DSPFMWSTS

・以下のコマンドは*IOSYSCFG 特殊権限または QIBM_IOSYSCFG_VIEW 機能が必要。
CFGTCP, CFGTCPSNMP, NETSTAT, WERKTCPSTS, WRKNETTBLE, WRKPCLTBLE, WRKSRVTBLE

・以下のコマンドで、PF4キーで既存設定値を確認するためには*IOSYSCFG 特殊権限または QIBM_IOSYSCFG_VIEW 機能が必要。
CHGCOMSNMP, CHGSNMPA, CHGTCPA, CHGTCPDMN, CHGTCPHTE, CHGTCPRTE, CHGTCPSVR, CHGUSRSNMP, CHGLPDA

・IはPF4キーを使用するために*IOSYSCONFIGが必要。
CHGVACSNMP

・以下のAPIは*IOSYSCFG 特殊権限または QIBM_IOSYSCFG_VIEW　権限が必要
• List Neighbor Cache Table (QtocLstNeighborTbl)
• List Network Connections (QtocLstNetCnn)
• List Network Interfaces (QtocLstNetIfc)
• List Network Routes (QtocLstNetRte)
• List Physical Interface ARP Table (QtocLstPhyIfcARPTbl)
• List Physical Interface Data (QtocLstPhyIfcDta)
• Retrieve Network Connection Data (QtocRtvNetCnnDta)
• Retrieve Network Interface Data (QtocRtvNetIfcDta)
• Retrieve TCP/IP Attributes (QtocRtvTCPA)

・以下のAPIは *SERVICE特殊権限か QIBM_SERVICE_TRACE function 権限
• Change Connection Attributes (QTOCCCNA)
• Change Community for SNMP (CHGCOMSNMP)
• Change SNMP Attributes (CHGSNMPA)
• Change TCP/IP Attributes (CHGTCPA)
• Change TCP/IP Domain (CHGTCPDMN)
• Change TCP/IP Host Table Entry (CHGTCPHTE)
• Change TCP/IP Route (CHGTCPRTE)
• Change TCP/IP Server (CHGTCPSVR)
• Change User for SNMP (CHGUSRSNMP)
• Change LPD Attributes (CHGLPDA)

・PF4キーで既存の値を確認するために*IOSYSCFG 特殊権限が必要に変更。
CHGVACSNMP

・以下のAPIは*IOSYSCFG特殊権限または QIBM_IOSYSCFG_VIEW 関数へのアクセスのいずれかが必要
• 隣接キャッシュテーブルのリスト (QtocLstNeighborTbl)
• ネットワーク接続のリスト (QtocLstNetCnn)
• ネットワークインターフェースのリスト (QtocLstNetIfc)
• ネットワーク経路のリスト (QtocLstNetRte)
• 物理インターフェース ARP テーブルのリスト (QtocLstPhyIfcARPTbl)
• 物理インターフェースデータのリスト (QtocLstPhyIfcDta)
• ネットワーク接続データの取得 (QtocRtvNetCnnDta)
• ネットワークインターフェースデータの取得 (QtocRtvNetIfcDta)
• TCP/IP の取得属性 (QtocRtvTCPA)

・CHGTELNAコマンドで現在のパラメーターを確認するには、*IOSYSCFG 特殊権限または QIBM_IOSYSCFG_VIEW 関数の使用権限が必要。（従来は不要、また、STRTCPSVRコマンドでTELNETサーバーを起動する等の権限とは無関係）

・Telnet 属性取得 API (QTVRTVTELA) が変更され、ユーザーに *IOSYSCFG 特殊権限または QIBM_IOSYSCFG_VIEW 関数の使用権限が必要に

・リモートからのパス・スルーセッション（STRPASTHRコマンド）は、IBM i 7.5以前はSTRPASTHR コマンドの RMTUSER パラメーターで指定されたユーザー・プロファイル、または指定されていない場合は QUSER を使用して実行されていました。IBM i 7.6 では、リモート・サインオン・プログラムは常に QUSER_NC ユーザー・プロファイルによって実行されます。

・NetServerで共有リソースを作成、変更、または削除するには*IOSYSCFG 特殊権限または QIBM_QZLS_NETSVR_SHARE 関数（既存リソースの変更に）の権限が必要です。以前は共有リソース化する対象オブジェクトの所有権があれば操作可能でした。 

・以下のテープ装置関連コマンドは*IOSYSCFG 特殊権限が必要
ADDTAPCTG, CGHTAPCTG, CHKTAP, CRTTAPCGY, DLTTAPCGY, DSPTAP, SETTAPCGY, CHGTAPF, CRTTAPF, OVRTAPF

・以下のテープおよびテープ関連コマンドは、*IOSYSCFG 特殊権限、または QIBM_IOSYSCFG_VIEW 機能への権限が必要に
DSPTAPCTG, DSPTAPSTS, WRKTAPCTG

・以下のテープアプリケーション用のAPIは*IOSYSCFG特殊権限が必要
QTARTLBL

・以下のテープ関連のAPIは*IOSYSCFG特殊権限、またはQIBM_IOSYSCFG_VIEW関数IDへの権限付与が必要になりました。
QTARCTGF, QTARCTGI, QTARDSTS

・以下のコマンドは*IOSYSCFG および *ALLOBJ の特殊権限が必要になりました。（以前は *IOSYSCFG の特殊権限のみが必要）
CRTSRVCFG, CHGSRVCFG, DLTSRVCFG, VFYSRVCFG

・以下のIBM i サービスの実行には*IOSYSCFG 特殊権限を持つユーザープロファイルで実行されているか、QIBM_IOSYSCFG_VIEW 関数使用 ID にアクセスできる必要があります。
ユーザーに権限がない場合SQL エラー SQLCODE -443 または SQLCODE -438（SQLSTATE '42502'）が返されます。
• ASP_INFO
• ASP_JOB_INFO
• MEDIA_LIBRARY_INFO
• NETSTAT_INFO
• NETSTAT_INTERFACE_INFO
• NETSTAT_JOB_INFO
• NETSTAT_ROUTE_INFO
• OBJECTCONNECT_INFO
• RDB_ENTRY_INFO
• SERVER_SBS_CONFIGURATION
• SERVER_SHARE_INFO
• TAPE_CARTRIDGE_INFO
• TELNET_SERVER_ATTRIBUTES
• TIME_PROTOCOL_INFO

Db2 Mirror for i 関連もセキュリティの強化がされていますが、省略します。。

## CREATE ALIAS で別名を作成する際のセキュリティ的な注意事項

WRKRDBDIRE の*LOCAL データベース・ディレクトリー項目またはローカル・システム上の IASP のデータベース・ディレクトリー項目のリレーショナル・データベース項目と一致しないRDBMS名が使用される場合、CREATE ALIAS SQL ステートメントには *IOSYSCFG 特殊権限が必要です。

結構細かい更新だと思います・・

## セキュリティ関連のシステム値のデフォルト変更

・パスワードレベル (QPWDLVL) システム値は、デフォルト値 3 で出荷されます。
・パスワードルール (QPWDRULES) システム値は、デフォルト値 *ALLCRTCHG *LMTPRFNAME *MINLEN15 *REQANY3 で出荷されます。

上記２つの変更は、新規システムインストールにのみ影響します。

セキュリティ関連の変更がまだあります・・長くなってしまったので別記事にします。