知識マップ: PowerShellモジュールの社内配布と更新 ── PSResourceGetと社内リポジトリ
記事「PowerShellモジュールの社内配布と更新 ── PSResourceGetと社内リポジトリ」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
この記事は共有フォルダーでのps1配布から卒業し、PowerShell 7.4に同梱されるPSResourceGetで社内リポジトリを構築・運用する方法を扱います。PSResourceGetは従来のPowerShellGetの後継として、Register-PSResourceRepositoryで登録したリポジトリに対しPublish-PSResource・Install-PSResource・Update-PSResourceで公開・取得・更新を行います。マニフェストにバージョンとFunctionsToExportを配列で明示することが内部関数の意図しない公開を防ぎ、共有フォルダーのアクセス制御が配布の実質的なセキュリティ境界になります。無人実行にはAllUsersスコープと管理者権限が必要で、実行ポリシーAllSignedの環境では各ファイルへのAuthenticode署名が必須であり、カタログ署名だけではこの要件を満たせません。
flowchart LR
accTitle: PSResourceGetによるモジュール社内配布の知識マップ
accDescr: PSResourceGetが従来のPowerShellGetを置き換え社内リポジトリでの公開・取得・更新を担うこと、マニフェストとFunctionsToExportの明示が内部関数の意図しない公開を防ぐこと、共有フォルダーのアクセス制御がセキュリティ境界になること、AllSigned環境ではAuthenticode署名が必須でカタログ署名だけでは満たせないことの関係を示す図
psresourceget["PSResourceGet(Microsoft.PowerShell.PSResourceGet)"]
internal_module_repository["社内リポジトリ(PSResourceGet)"]
powershellget_2["PowerShellGet 2.2.5(従来版)"]
register_psresourcerepository["Register-PSResourceRepository"]
repository_share_acl["社内リポジトリ共有フォルダーのアクセス制御"]
publish_psresource["Publish-PSResource"]
install_psresource["Install-PSResource"]
update_psresource["Update-PSResource"]
install_scope["-Scope(CurrentUser/AllUsers)"]
task_scheduler["タスクスケジューラの無人実行"]
admin_rights["管理者権限"]
module_versioning_semver["セマンティックバージョニング(モジュール)"]
module_manifest["モジュールマニフェスト(.psd1)"]
prerelease_version["プレリリース版(PrivateData.PSData.Prerelease)"]
functionstoexport_wildcard["FunctionsToExportのワイルドカード指定('*')"]
internal_function_exposure["内部関数の意図しない公開"]
functionstoexport_explicit["FunctionsToExportの配列明示"]
authenticode_signature["Authenticode署名(スクリプトファイル)"]
code_signing_cert["コード署名証明書"]
code_signing_timestamp["コード署名のタイムスタンプ"]
allsigned_execution_policy["実行ポリシーAllSigned"]
file_catalog_signing["カタログ署名(New-FileCatalog)"]
psmodulepath["$env:PSModulePath(モジュールの探索パス)"]
psresourceget -->|"の後継"| powershellget_2
psresourceget -->|"利用する"| internal_module_repository
internal_module_repository -->|"で構成できる"| register_psresourcerepository
internal_module_repository -.->|"前提とする"| repository_share_acl
psresourceget -->|"利用する"| publish_psresource
psresourceget -->|"利用する"| install_psresource
psresourceget -->|"利用する"| update_psresource
install_psresource -->|"利用する"| install_scope
task_scheduler -.->|"前提とする"| install_scope
install_scope -.->|"前提とする"| admin_rights
module_versioning_semver -->|"推奨される対応"| module_manifest
module_manifest -.->|"利用する"| prerelease_version
functionstoexport_wildcard -->|"原因になり得る"| internal_function_exposure
functionstoexport_explicit -->|"防止する"| internal_function_exposure
functionstoexport_explicit -->|"推奨される対応"| module_manifest
authenticode_signature -->|"利用する"| code_signing_cert
authenticode_signature -.->|"利用する"| code_signing_timestamp
allsigned_execution_policy -->|"前提とする"| authenticode_signature
install_psresource -->|"利用する"| file_catalog_signing
authenticode_signature -.->|"推奨される対応"| internal_module_repository
install_psresource -->|"前提とする"| psmodulepath
internal_module_repository -.->|"前提とする"| module_manifest
概念間の関係(全22件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- PSResourceGet(Microsoft.PowerShell.PSResourceGet)はPowerShellGet 2.2.5(従来版)の後継に当たります。
- PSResourceGet(Microsoft.PowerShell.PSResourceGet)は社内リポジトリ(PSResourceGet)を利用します。
- 社内リポジトリ(PSResourceGet)はRegister-PSResourceRepositoryで構成できます。
- 社内リポジトリ(PSResourceGet)は社内リポジトリ共有フォルダーのアクセス制御を前提とします。
- PSResourceGet(Microsoft.PowerShell.PSResourceGet)はPublish-PSResourceを利用します。
- PSResourceGet(Microsoft.PowerShell.PSResourceGet)はInstall-PSResourceを利用します。
- PSResourceGet(Microsoft.PowerShell.PSResourceGet)はUpdate-PSResourceを利用します。
- Install-PSResourceは-Scope(CurrentUser/AllUsers)を利用します。
- タスクスケジューラの無人実行は-Scope(CurrentUser/AllUsers)を前提とします。
- -Scope(CurrentUser/AllUsers)は管理者権限を前提とします。
- セマンティックバージョニング(モジュール)はモジュールマニフェスト(.psd1)に対する本記事の推奨です。
- モジュールマニフェスト(.psd1)はプレリリース版(PrivateData.PSData.Prerelease)を利用します。
- FunctionsToExportのワイルドカード指定('*')は内部関数の意図しない公開の原因になることがあります。
- FunctionsToExportの配列明示は内部関数の意図しない公開を防ぎます。
- FunctionsToExportの配列明示はモジュールマニフェスト(.psd1)に対する本記事の推奨です。
- Authenticode署名(スクリプトファイル)はコード署名証明書を利用します。
- Authenticode署名(スクリプトファイル)はコード署名のタイムスタンプを利用します。
- 実行ポリシーAllSignedはAuthenticode署名(スクリプトファイル)を前提とします。
- Install-PSResourceはカタログ署名(New-FileCatalog)を利用します。
- Authenticode署名(スクリプトファイル)は社内リポジトリ(PSResourceGet)に対する本記事の推奨です。
- Install-PSResourceは$env:PSModulePath(モジュールの探索パス)を前提とします。
- 社内リポジトリ(PSResourceGet)はモジュールマニフェスト(.psd1)を前提とします。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。