ファイルとレジストリキーのセキュリティ記述子
Active Directoryサービスインターフェイス (ADSI) を使用すると、ユーザーが作成したファイルまたはファイル共有のAclを設定または変更する機能など、組織内のファイルシステムを管理およびセキュリティで保護することができます。 IADsSecurityDescriptor、IADsAccessControlList、IADsAccessControlEntryなどのセキュリティインターフェイスは、Active Directory、Exchange、ファイル、ファイル共有、またはレジストリキーオブジェクトのAclを設定します。 これらのインターフェイスを使用する前に、セキュリティ記述子がインターフェイスとは異なる形式を使用している場合、またはセキュリティ管理者グループのメンバーではないためにセキュリティ記述子のSACLへのアクセス権がない場合は、セキュリティ記述子の変更が必要になることがあります。
セキュリティ記述子を取得、設定、または変更するには、IADsSecurityUtilityインターフェイスを使用します。 このインターフェイスを使用すると、さまざまなリソースから、元の形式 (ADSI形式のIADsSecurityDescriptor、未加工のセキュリティ記述子、Exchange 5.5で使用されている十六進文字列など) でセキュリティ記述子を取得できます。 取得すると、生のセキュリティ記述子から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プロパティと、適切な値を取得できる場所を示しています。
-
ファイルまたはファイル共有オブジェクトの詳細と使用可能な値の一覧については、 「ファイルのセキュリティとアクセス権」 を参照してください。
レジストリオブジェクトの詳細と使用可能な値の一覧については、 「レジストリキーのセキュリティとアクセス権」 を参照してください。
-
詳細については、ACE_HEADER 構造体の AceType メンバーを参照してください。
-
詳細については、ACE_HEADER 構造体の AceFlags メンバーを参照してください。
-
0 または WinNT.h. の次の値の1つ以上の組み合わせが含まれます。
-
h.ACE_OBJECT_TYPE_PRESENT1)
-
ObjectTypeに有効な値が含まれています。
-
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プロパティを使用して、取得または設定するセキュリティ記述子の個々の部分を指定します。 たとえば、GetSecurityDescriptor を呼び出してセキュリティ記述子の他の部分を取得せずに DACL のみを取得する前に、SecurityMask を ADS_SECURITY_INFO_DACL に設定できます。
IADsSecurityUtilityインターフェイスを使用してACEをファイルに追加するコード例の詳細については、 ファイルにACEを追加するためのコード例を参照してください。
次のコード例では、Visual BasicおよびMicrosoft Visual Basic Scripting Editionで使用するAccessMask, AceType, AceFlags, and 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