CSacl クラス

このクラスは、SACL (システム アクセス制御リスト) 構造体のラッパーです。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

class CSacl : public CAcl

メンバー

パブリック コンストラクター

名前 説明
CSacl::CSacl コンストラクター。
CSacl::~CSacl デストラクター。

パブリック メソッド

名前 説明
CSacl::AddAuditAce CSacl オブジェクトに監査アクセス制御エントリ (ACE) を追加します。
CSacl::GetAceCount CSacl オブジェクト内のアクセス制御エントリ (ACE) の数を返します。
CSacl::RemoveAce CSacl オブジェクトから特定の ACE (アクセス制御エントリ) を削除します。
CSacl::RemoveAllAces CSacl オブジェクトに含まれるすべての ACE を削除します。

パブリック演算子

名前 説明
CSacl::operator = 代入演算子。

解説

SACL には、アクセス制御エントリ (ACE) が含まれています。これらは、ドメイン コントローラーのセキュリティ イベント ログに監査レコードを生成するアクセス試行の種類を指定します。 SACL では、オブジェクトのレプリカを含むすべてのドメイン コントローラーではなく、アクセス試行が発生したドメイン コントローラーでのみログ エントリが生成されることに注意してください。

オブジェクトの SACL を設定または取得するには、要求元のスレッドのアクセス トークンで SE_SECURITY_NAME 特権が有効になっている必要があります。 管理者グループには、既定でこの特権が付与され、それを他のユーザーまたはグループに付与できます。 必要なのは特権を付与することだけではあります。特権によって定義された操作を実行できるようにするには、その前に、セキュリティ アクセス トークンで特権を有効にする必要があります。 このモデルでは、特定のシステム操作に対してのみ特権を有効にし、不要になったときに無効にすることができます。 SE_SECURITY_NAME の有効化の例については、「AtlGetSacl」と「AtlSetSacl」を参照してください。

SACL オブジェクトの ACE の追加、削除、作成を行うには、提供されているクラス メソッドを使用します。 「AtlGetSacl」および「AtlSetSacl」も参照してください。

Windows のアクセス制御モデルの概要については、Windows SDK のアクセス制御に関するページをご覧ください。

継承階層

CAcl

CSacl

必要条件

ヘッダー: atlsecurity.h

CSacl::AddAuditAce

CSacl オブジェクトに監査アクセス制御エントリ (ACE) を追加します。

bool AddAuditAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    bool bSuccess,
    bool bFailure,
    BYTE AceFlags = 0) throw(...);

bool AddAuditAce(
    const CSid& rSid,
    ACCESS_MASK AccessMask,
    bool bSuccess,
    bool bFailure,
    BYTE AceFlags,
    const GUID* pObjectType,
    const GUID* pInheritedObjectType) throw(...);

パラメーター

rSid
CSid オブジェクト。

AccessMask
指定された CSid オブジェクトの監査されるアクセス権のマスクを指定します。

bSuccess
許可されたアクセス試行を監査するかどうかを指定します。 監査を有効にするには、このフラグを true に設定します。それ以外の場合は false に設定します。

bFailure
拒否されたアクセス試行を監査するかどうかを指定します。 監査を有効にするには、このフラグを true に設定します。それ以外の場合は false に設定します。

AceFlags
ACE 継承を制御するビット フラグのセット。

pObjectType
オブジェクトの種類。

pInheritedObjectType
継承されたオブジェクトの型。

戻り値

ACE が CSacl オブジェクトに追加された場合は TRUE、失敗した場合は FALSE を返します。

解説

CSacl には、アクセス制御エントリ (ACE) が含まれています。これらは、セキュリティ イベント ログに監査レコードを生成するアクセス試行の種類を指定します。 このメソッドによって、このような ACE が CSacl オブジェクトに追加されます。

AceFlags パラメーターで設定できるさまざまなフラグの説明については、「ACE_HEADER」を参照してください。

CSacl::CSacl

コンストラクター。

CSacl() throw();
CSacl(const ACL& rhs) throw(...);

パラメーター

rhs
既存の ACL (アクセス制御リスト) 構造体。

解説

CSacl オブジェクトは、必要に応じて、既存の ACL 構造体を使用して作成できます。 このパラメーターは、随意アクセス制御リスト (DACL) ではなくシステム アクセス制御リスト (SACL) である必要があります。 デバッグ ビルドでは、DACL が指定されると、アサーションが発生します。 リリース ビルドでは、DACL からのエントリはすべて無視されます。

CSacl::~CSacl

デストラクター。

~CSacl() throw();

解説

デストラクターによって、すべてのアクセス制御エントリ (ACE) を含め、オブジェクトで取得されたすべてのリソースが解放されます。

CSacl::GetAceCount

CSacl オブジェクト内のアクセス制御エントリ (ACE) の数を返します。

UINT GetAceCount() const throw();

戻り値

CSacl オブジェクトに含まれる ACE の数を返します。

CSacl::operator =

代入演算子。

CSacl& operator=(const ACL& rhs) throw(...);

パラメーター

rhs
既存のオブジェクトに割り当てる ACL (アクセス制御リスト)。

戻り値

更新された CSacl オブジェクトへの参照を返します。 ACL パラメーターは、実際に、随意アクセス制御リスト (DACL) ではなくシステム アクセス制御リスト (SACL) である必要があります。 デバッグ ビルドでは、アサーションが発生し、リリース ビルドでは、ACL パラメーターが無視されます。

CSacl::RemoveAce

CSacl オブジェクトから特定の ACE (アクセス制御エントリ) を削除します。

void RemoveAce(UINT nIndex) throw();

パラメーター

Nindex
削除する ACE エントリのインデックス。

解説

このメソッドは、CAtlArray::RemoveAt から派生します。

CSacl::RemoveAllAces

CSacl オブジェクトに含まれるすべてのアクセス制御エントリ (ACE) を削除します。

void RemoveAllAces() throw();

解説

CSacl オブジェクト内のすべての ACE 構造体を削除します (ある場合)。

関連項目

CAcl クラス
Acl
ACE
クラスの概要
セキュリティに関するグローバル関数