ファイルとレジストリ キーのセキュリティ記述子
Active Directory サービス インターフェイス (ADSI) を使用して、組織内のファイル システムを管理およびセキュリティで保護できます。これには、ユーザーによって作成されたファイルまたはファイル共有の ACL を設定または変更する機能が含まれます。 IADsSecurityDescriptor 、IADsAccessControlList、IADsAccessControlEntry などのセキュリティ インターフェイス、Active Directory、Exchange、ファイル、ファイル共有、またはレジストリ キー オブジェクトに ACL を設定します。 これらのインターフェイスを使用する前に、インターフェイスとは異なる形式を使用する場合や、セキュリティ管理者グループのメンバーではないためにセキュリティ記述子の SACL へのアクセス権がない場合は、セキュリティ記述子を変更する必要があります。
セキュリティ記述子を取得、設定、または変更するには、IADsSecurityUtility インターフェイスを使用します。 このインターフェイスを使用すると、IADsSecurityDescriptorADSI 形式、未加工のセキュリティ記述子、Exchange 5.5 で使用される 16 進数の文字列など、元の形式のさまざまなリソースからセキュリティ記述子を取得できます。 取得すると、生のセキュリティ記述子から IADsSecurityDescriptor になど、別の形式に変換できます。 その後、新しい形式をリソースに書き戻すことができます。
AccessMask や AceFlags など、IADsAccessControlEntryプロパティ値の一部は、オブジェクトの種類によって異なります。 たとえば、Active Directory オブジェクトは、IADsAccessControlEntry.AccessMask プロパティの ADS_RIGHTS_ENUM 列挙体の ADS_RIGHT_GENERIC_READ メンバーを使用しますが、ファイル オブジェクトに対する同等のアクセス権は FILE_GENERIC_READ。 Active Directory オブジェクトと Active Directory 以外のオブジェクトでは、すべてのプロパティ値が同じであると想定しても安全ではありません。 次の一覧は、Active Directory 以外のオブジェクトと適切な値を取得できる場所が異なる IADsAccessControlEntry プロパティの を示しています。
-
ファイルまたはファイル共有オブジェクトの使用可能な値の詳細と一覧については、「ファイルのセキュリティとアクセス権の」を参照してください。
レジストリ オブジェクトの使用可能な値の詳細と一覧については、「レジストリ キーのセキュリティとアクセス権の 」を参照してください。
-
AceTypeの
-
詳細については、ACE_HEADER 構造体の AceType メンバーを参照してください。
-
AceFlagsの
-
詳細については、ACE_HEADER 構造体の AceFlags メンバーを参照してください。
-
WinNT.h の 0 個または 1 つ以上の次の値の組み合わせを含みます。
-
ACE_OBJECT_TYPE_PRESENT (1)
-
ACE_INHERITED_OBJECT_TYPE_PRESENT (2)
-
InheritedObjectType には有効な値が含まれています。
-
-
詳細については、ACCESS_DENIED_OBJECT_ACE、ACCESS_ALLOWED_OBJECT_ACE、および同様の構造体の ObjectType メンバーを参照してください。 このプロパティは、Active Directory 以外のオブジェクトに対して設定または変更しないでください。
-
詳細については、ACCESS_DENIED_OBJECT_ACE、ACCESS_ALLOWED_OBJECT_ACE、および同様の構造体の InheritedObjectType メンバーを参照してください。 このプロパティは、Active Directory 以外のオブジェクトに対して設定または変更しないでください。
通常、IADsSecurityUtility.GetSecurityDescriptorは、所有者、グループ、SACL、DACL など、セキュリティ記述子のすべての部分を取得します。 同様に、IADsSecurityUtility.SetSecurityDescriptorは、セキュリティ記述子のすべての部分を既定で上書きします。 IADsSecurityUtility.SecurityMask プロパティを使用して、取得または設定するセキュリティ記述子の個々の部分を指定できます。 たとえば、SecurityMask を ADS_SECURITY_INFO_DACL に設定してから、GetSecurityDescriptor を呼び出して、セキュリティ記述子の他の部分を取得せずに DACL のみを取得できます。
IADsSecurityUtility インターフェイスを使用して ACE をファイルに追加するコード例の詳細については、「ace をファイル に追加するためのコード例参照してください。
次のコード例では、AccessMask、AceType、AceFlags、および Visual Basic および Microsoft Visual Basic Scripting Edition で使用する Flags プロパティのファイル、ファイル共有、およびレジストリ オブジェクトの定数識別子を提供します。
' Identifiers for the IADsAccessControlEntry.AccessMask property for file,
' file share, and registry objects.
Const DELETE = &H10000
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const STANDARD_RIGHTS_READ = &H20000
Const STANDARD_RIGHTS_WRITE = &H20000
Const STANDARD_RIGHTS_EXECUTE = &H20000
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SPECIFIC_RIGHTS_ALL = &HFFFF
' Identifiers for the IADsAccessControlEntry.AccessMask property for file and
' file share objects.
Const FILE_READ_DATA = &H1 ' file & pipe
Const FILE_LIST_DIRECTORY = &H1 ' directory
Const FILE_WRITE_DATA = &H2 ' file & pipe
Const FILE_ADD_FILE = &H2 ' directory
Const FILE_APPEND_DATA = &H4 ' file
Const FILE_ADD_SUBDIRECTORY = &H4 ' directory
Const FILE_CREATE_PIPE_INSTANCE = &H4 ' named pipe
Const FILE_READ_EA = &H8 ' file & directory
Const FILE_WRITE_EA = &H10 ' file & directory
Const FILE_EXECUTE = &H20 ' file
Const FILE_TRAVERSE = &H20 ' directory
Const FILE_DELETE_CHILD = &H40 ' directory
Const FILE_READ_ATTRIBUTES = &H80 ' all
Const FILE_WRITE_ATTRIBUTES = &H100 ' all
Const FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &H1FF
Const FILE_GENERIC_READ = STANDARD_RIGHTS_READ Or FILE_READ_DATA Or FILE_READ_ATTRIBUTES Or _
FILE_READ_EA Or SYNCHRONIZE
Const FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE Or FILE_WRITE_DATA Or FILE_WRITE_ATTRIBUTES Or _
FILE_WRITE_EA Or FILE_APPEND_DATA Or SYNCHRONIZE
Const FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE Or FILE_READ_ATTRIBUTES Or FILE_EXECUTE Or SYNCHRONIZE
' Identifiers for the IADsAccessControlEntry.AccessMask property for registry
' objects.
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_WOW64_32KEY = &H200
Const KEY_WOW64_64KEY = &H100
Const KEY_WOW64_RES = &H300
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And _
(Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
' Identifiers for the IADsAccessControlEntry.AceFlags property for file and
' file share objects.
Const OBJECT_INHERIT_ACE = &H1
Const CONTAINER_INHERIT_ACE = &H2
Const NO_PROPAGATE_INHERIT_ACE = &H4
Const INHERIT_ONLY_ACE = &H8
Const INHERITED_ACE = &H10
' Identifiers for the IADsAccessControlEntry.Flags property.
Const ACE_OBJECT_TYPE_PRESENT = 1
Const ACE_INHERITED_OBJECT_TYPE_PRESENT = 2