.NET特集
 N1.Web関連
 Q1.VS2005自作Visualizer
 R1.OpenCV

VB6特集
 S1.Net関連(95/98)
 S2.Net関連(NT)
 S3.コモンダイアログの拡張
 S4.MailSlot関連
 S5.RAS関連
 S6.セキュリティ関連
 S7.FAX制御(Win2000)
 S8.ADSIの利用
 T1.グラデーションバー
 T2.アイコンメニュー
 T3.バーコード(NW7)
 セキュリティ関連
セキュリティ関連では、WindowsNTで使用されているセキュリティ全般の説明を行いながら、 サンプルを使用して API関数の使用方法の解説を行います。解説は、あくまで私自身が解釈した内容になりますので、 混乱を招くような解説(不適切)になる恐れがある場合は、 解説を行っていません。その場合は参考文献(Knowledge Base)などを表記していますので、 そちらをご参照下さい。なお、表示されているAPI関数は、セキュリティ関連のAPI関数のみです。
動作確認は、WindowsNT4.0(SP6),Windows2000 で行っています。
 1.SID (セキュリティID)
SIDよりユーザー名取得/ユーザー名よりSID取得を行う方法。
LookupAccountName, LookupAccountSid, AllocateAndInitializeSid, GetSidIdentifierAuthority, IsValidSid, FreeSid

サンプルダウンロード
 2.特権名よりディスプレイ名取得
通常、特権名は文字列定数で管理されており、例えば、「システム時刻の変更」は、「SeSystemtimePrivilege」 のような文字列で表されます。これらの文字列をディスプレイ名(説明)に変換するサンプルです。 また、LUID(locally unique identifier)からディスプレイ名(説明)に変換する方法も提供しています。 LUIDとは、64bitで表されるシステムでユニークなIDの事です。このサンプルの使い道は特にありませんが、 今後説明していくセキュリティ関連で必要になってくるので、使い方だけでも理解して頂く為のものです。
LookupPrivilegeDisplayName, LookupPrivilegeValue, LookupPrivilegeName
サンプルダウンロード
 3.ある特権を持つアカウントの列挙
ある特権を持つアカウントの列挙を行うには、LSAオブジェクトを使用します。 LSAとは、Local Security Authority の略で、「ローカルセキュリティオーソリティ」と読みます。 LSAは名前からもお分かり頂けいると思いますが、「ローカルなセキュリティ権限?」と言う意味になります。 簡単に説明すれば、LSAオブジェクトは、ローカルユーザーアカウントを管理しているもので、 PDC(プライマリドメインコントローラ)のNTサーバーでは、全てのドメインアカウントを管理しています。
LsaOpenPolicy, LsaClose, LsaEnumerateAccountsWithUserRight, LsaNtStatusToWinError, LsaFreeMemory, LsaLookupSids

サンプルダウンロード
 4.アカウントに与えられた特権名列挙
「 ある特権を持つアカウントの列挙」サンプルでは、特権名よりアカウントを求めていますが、 今度はこの逆のアカウント名より特権名を求める方法を説明します。正確に言えばアカウントが持つ全ての 特権を取得する方法です。
LsaOpenPolicy, LsaClose, LsaEnumerateAccountRights, LsaNtStatusToWinError, LsaFreeMemory, LsaLookupSids, LsaAddAccountRights, LsaRemoveAccountRights

サンプルダウンロード
 5.アカウントに与えられた特権名追加・削除
「 ある特権を持つアカウントの列挙」サンプルでは、特権の列挙(表示)しか行えませんが、 追加・削除の方法を説明します。
LsaOpenPolicy, LsaClose, LsaEnumerateAccountRights, LsaNtStatusToWinError, LsaFreeMemory, LsaLookupSids, LsaAddAccountRights, LsaRemoveAccountRights


サンプルダウンロード
 6.ドメイン名・ワークグループ名の取得
現在ログオンしているのが、ドメインの場合にはドメイン名を取得し、ワークグループの場合にはワーク グループ名を取得する方法を紹介します。この方法を用いれば、ログオン先がドメインまたは、 ワークグループのどちらに参加しているかを判断する事ができます。
LsaOpenPolicy, LsaClose, LsaNtStatusToWinError, LsaFreeMemory, LsaQueryInformationPolicy

サンプルダウンロード
 7.セキュリティイベントの監査
ユーザーマネージャーの「原則」-「監査」で表示される「監査の原則」と同様の制御をVBより行います。 Windows2000では原則の種類(ディレクトリサービス、アカウントログオン)が増えていますが、対応しています。
LsaOpenPolicy, LsaClose, LsaNtStatusToWinError, LsaFreeMemory, LsaQueryInformationPolicy, LsaSetInformationPolicy

サンプルダウンロード
 8.ファイルの所有者・グループ取得
オブジェクトの所有者(オーナー)を取得する方法を説明します。 例えば、ファイルのプロパティの「セキュリティ」 -「アクセス権」で表示される「ファイルのアクセス権」 ダイアログボックスの[所有者]の項目に相当する内容の事です。また、プライマリーグループの取得も行います。
GetNamedSecurityInfo, LookupAccountSid

サンプルダウンロード
 9.ファイルのアクセス権取得
私の所へ多く寄せられる質問の一つでもある、オブジェクトのアクセス権を取得する方法を説明します。 例えば、ファイルのプロパティの「セキュリティ」 -「アクセス権」で表示される「ファイルのアクセス権」 に相当する内容の事です。今回は取得する方法のみを説明します。
GetNamedSecurityInfo, GetExplicitEntriesFromAcl

サンプルダウンロード
 10.ファイルの監査情報取得
オブジェクトの監査情報を取得する方法を説明します。 例えば、ファイルのプロパティの「セキュリティ」 -「監査」で表示される「ファイルの監査」に相当する内容の事です。 今回は取得する方法のみを説明します。オブジェクトの監査情報とは、別名、セキュリティアクセス制御リストと言い、 System Access-Control List (SACL) の事です。
GetNamedSecurityInfo, GetExplicitEntriesFromAcl

サンプルダウンロード
 11.ファイルの所有者設定
オブジェクトの所有者(オーナー)を設定する方法を説明します。 サンプルでは、ファイルのプロパティの「セキュリティ」-「所有権」で表示される「所有者」ダイアログボックスの 「所有権の取得」と同等の処理を行ないます。
GetNamedSecurityInfo, SetNamedSecurityInfo, LookupAccountSid, AllocateAndInitializeSid, OpenProcessToken, GetCurrentProcess, LookupPrivilegeValue, AdjustTokenPrivileges

サンプルダウンロード
 12.ファイルのアクセス権設定(その1)
「ファイルのアクセス権取得」に少し手を加えて、現在設定されているアクセス権全てをクリアー (アクセス権なし)する方法を紹介します。こんな処理を行う事は無いと思うのですが、 アクセス権の設定方法を理解する簡単な方法として紹介したいと思います。
SetEntriesInAcl, GetNamedSecurityInfo, GetExplicitEntriesFromAcl

サンプルダウンロード
 13.ファイルのアクセス権設定(その2)
「ファイルのアクセス権取得」に少し手を加えて、現在設定されているアクセス 権に新しいアクセス権を追加する方法を紹介します。
SetEntriesInAcl, GetNamedSecurityInfo, BuildExplicitAccessWithName, GetExplicitEntriesFromAcl


サンプルダウンロード
 14.ファイルのアクセス権設定(その2)
オブジェクトの所有者(オーナー)を取得する方法は、「ファイルの所有者・グループ取得」で説明していますが、 この方法とは別の方法(API関数)を説明します。アクセス制御(Access Control)を行うAPI関数には低レベル(Low-Level) アクセス制御関数というものもあります。これらの関数を利用すると「ファイルの所有者・グループ取得」より 多少複雑な処理になってしまいますが、知っていても損はないと思います。
GetFileSecurity, GetSecurityDescriptorOwner, GetSecurityDescriptorGroup, LookupAccountSid

サンプルダウンロード
 15.ファイルのアクセス権取得(Low-Level)
GetFileSecurity, GetSecurityDescriptorDacl, GetAclInformation, GetAce, LookupAccountSid
サンプルダウンロード
 16.ファイルの監査情報取得(Low-Level)
GetFileSecurity, GetSecurityDescriptorSacl, GetAclInformation, GetAce, LookupAccountSid
サンプルダウンロード

Copyright © 2005 tadahiro higuchi. All Rights Reserved.