プライベート オブジェクトのセキュリティ記述子
セキュリティ記述子を作成するために、保護されたサーバーは、セキュリティ保護可能なオブジェクトのセキュリティ記述子を作成するためにアプリケーションと同じ手順を使用できます。 サンプル コードについては、「C++での新しいオブジェクトのセキュリティ記述子の作成」を参照してください。 または、保護されたサーバー アプリケーションは、BuildSecurityDescriptor 関数を呼び出してこれを行うことができます。 既存の 自己相対セキュリティ記述子 へのポインターが BuildSecurityDescriptorに提供された場合、そのセキュリティ記述子から取得された情報を、関数呼び出しでパラメーターとして渡された新しいアクセス制御情報とマージして、新しいセキュリティ記述子を構築します。 必要に応じて、所有者とグループは、関数に渡 トラスティ 構造体によって指定されます。 BuildSecurityDescriptor によって作成されたセキュリティ記述子は、自己相対 形式。
さらに、Windows API には、クライアント セキュリティ情報と、親オブジェクトのセキュリティ記述子または既定のセキュリティ記述子から継承された情報をマージするための一連の関数が用意されています。 CreatePrivateObjectSecurity、GetPrivateObjectSecurity、SetPrivateObjectSecurity、および DestroyPrivateObjectSecurity 関数を使用すると、アクセス トークンから既定の情報を取得し、継承をサポートし、セキュリティ記述子の特定の部分を操作できます。 これは、クライアントがセキュリティで保護されたオブジェクトの階層内にプライベート オブジェクトを作成する場合に役立ちます。 たとえば、CreatePrivateObjectSecurity 関数を使用して、クライアントで指定された ACE、親オブジェクトから継承された ACE、作成するクライアントのアクセス トークンの既定の所有者を含むセキュリティ記述子を作成できます。 BuildSecurityDescriptorは、関数呼び出しに渡されたアクセス制御情報または既存のセキュリティ記述子からセキュリティ記述子を作成しますが、CreatePrivateObjectSecurity は、既存のセキュリティ記述子の情報からのみセキュリティ記述子を作成します。
LookupSecurityDescriptorParts 関数は、既存の の自己相対セキュリティ記述子からセキュリティ記述子情報を取得します。 この情報には、所有者とグループの仕様、SACL または DACL 内の ACE の数、SACL または DACL 内の ACE の一覧が含まれます。