MutexSecurity クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
名前付きミューテックスの Windows アクセス制御セキュリティを表します。 このクラスは継承できません。
public ref class MutexSecurity sealed : System::Security::AccessControl::NativeObjectSecurity
public sealed class MutexSecurity : System.Security.AccessControl.NativeObjectSecurity
[System.Security.SecurityCritical]
public sealed class MutexSecurity : System.Security.AccessControl.NativeObjectSecurity
type MutexSecurity = class
inherit NativeObjectSecurity
[<System.Security.SecurityCritical>]
type MutexSecurity = class
inherit NativeObjectSecurity
Public NotInheritable Class MutexSecurity
Inherits NativeObjectSecurity
- 継承
- 属性
例
次のコード例では、ルールとルールの分離 Allow を示し Deny 、互換性のあるルールの権限の組み合わせを示します。 この例では、オブジェクトを MutexSecurity 作成し、現在のユーザーのさまざまな権限を許可および拒否するルールを追加し、結果の規則のペアを表示します。 次に、現在のユーザーに対して新しい権限を許可し、結果を表示し、新しい権限が既存 Allow のルールとマージされていることを示します。
注意
この例では、セキュリティ オブジェクトをオブジェクトに Mutex アタッチしません。 セキュリティ オブジェクトをアタッチする例はMutex.GetAccessControlMutex.SetAccessControl、
using System;
using System.Threading;
using System.Security.AccessControl;
using System.Security.Principal;
public class Example
{
public static void Main()
{
// Create a string representing the current user.
string user = Environment.UserDomainName + "\\" +
Environment.UserName;
// Create a security object that grants no access.
MutexSecurity mSec = new MutexSecurity();
// Add a rule that grants the current user the
// right to enter or release the mutex.
MutexAccessRule rule = new MutexAccessRule(user,
MutexRights.Synchronize | MutexRights.Modify,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
// Add a rule that denies the current user the
// right to change permissions on the mutex.
rule = new MutexAccessRule(user,
MutexRights.ChangePermissions,
AccessControlType.Deny);
mSec.AddAccessRule(rule);
// Display the rules in the security object.
ShowSecurity(mSec);
// Add a rule that allows the current user the
// right to read permissions on the mutex. This rule
// is merged with the existing Allow rule.
rule = new MutexAccessRule(user,
MutexRights.ReadPermissions,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
ShowSecurity(mSec);
}
private static void ShowSecurity(MutexSecurity security)
{
Console.WriteLine("\r\nCurrent access rules:\r\n");
foreach(MutexAccessRule ar in
security.GetAccessRules(true, true, typeof(NTAccount)))
{
Console.WriteLine(" User: {0}", ar.IdentityReference);
Console.WriteLine(" Type: {0}", ar.AccessControlType);
Console.WriteLine(" Rights: {0}", ar.MutexRights);
Console.WriteLine();
}
}
}
/*This code example produces output similar to following:
Current access rules:
User: TestDomain\TestUser
Type: Deny
Rights: ChangePermissions
User: TestDomain\TestUser
Type: Allow
Rights: Modify, Synchronize
Current access rules:
User: TestDomain\TestUser
Type: Deny
Rights: ChangePermissions
User: TestDomain\TestUser
Type: Allow
Rights: Modify, ReadPermissions, Synchronize
*/
Imports System.Threading
Imports System.Security.AccessControl
Imports System.Security.Principal
Public Class Example
Public Shared Sub Main()
' Create a string representing the current user.
Dim user As String = Environment.UserDomainName _
& "\" & Environment.UserName
' Create a security object that grants no access.
Dim mSec As New MutexSecurity()
' Add a rule that grants the current user the
' right to enter or release the mutex.
Dim rule As New MutexAccessRule(user, _
MutexRights.Synchronize _
Or MutexRights.Modify, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
' Add a rule that denies the current user the
' right to change permissions on the mutex.
rule = New MutexAccessRule(user, _
MutexRights.ChangePermissions, _
AccessControlType.Deny)
mSec.AddAccessRule(rule)
' Display the rules in the security object.
ShowSecurity(mSec)
' Add a rule that allows the current user the
' right to read permissions on the mutex. This rule
' is merged with the existing Allow rule.
rule = New MutexAccessRule(user, _
MutexRights.ReadPermissions, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
ShowSecurity(mSec)
End Sub
Private Shared Sub ShowSecurity(ByVal security As MutexSecurity)
Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)
For Each ar As MutexAccessRule In _
security.GetAccessRules(True, True, GetType(NTAccount))
Console.WriteLine(" User: {0}", ar.IdentityReference)
Console.WriteLine(" Type: {0}", ar.AccessControlType)
Console.WriteLine(" Rights: {0}", ar.MutexRights)
Console.WriteLine()
Next
End Sub
End Class
'This code example produces output similar to following:
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, Synchronize
'
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, ReadPermissions, Synchronize
注釈
オブジェクトは MutexSecurity 、名前付きシステム ミューテックスのアクセス権を指定し、アクセス試行の監査方法も指定します。 ミューテックスへのアクセス権はルールとして表され、各アクセス 規則はオブジェクトによって MutexAccessRule 表されます。 各監査規則は、オブジェクトによって MutexAuditRule 表されます。
これにより、セキュリティで保護されたオブジェクトへのアクセスを制御する任意のアクセス制御リスト (DACL) が 1 つ、監査対象のアクセス試行を指定するシステム アクセス制御リスト (SACL) が、セキュリティで保護可能な各オブジェクトに最大 1 つ存在する、基になる Windows セキュリティ システムが反映されます。 DACL と SACL は、ユーザーとグループのアクセスと監査を指定するアクセス制御エントリ (ACE) の順序付きリストです。 1 MutexAccessRule つまたは MutexAuditRule 複数の ACE を表すオブジェクトがあります。
注意
オブジェクトは Mutex 、ローカル ミューテックスまたは名前付きシステム ミューテックスを表すことができます。 Windowsアクセス制御のセキュリティは、名前付きシステム ミューテックスに対してのみ意味があります。
、MutexAccessRuleクラスはMutexSecurity、ACL と MutexAuditRule ACE の実装の詳細を非表示にします。 これにより、17 種類の ACE と、アクセス権の継承と伝達を正しく維持する複雑さを無視できます。 これらのオブジェクトは、次の一般的なアクセス制御エラーを防ぐためにも設計されています。
NULL DACL を使用してセキュリティ記述子を作成する。 DACL への null 参照を使用すると、すべてのユーザーがオブジェクトにアクセス 規則を追加でき、サービス拒否攻撃が発生する可能性があります。 新しい MutexSecurity オブジェクトは常に空の DACL で始まり、すべてのユーザーのすべてのアクセスが拒否されます。
ACE の正規順序に違反しています。 DACL 内の ACE リストが正規の順序で保持されていない場合、ユーザーに誤ってセキュリティで保護されたオブジェクトへのアクセス権が付与される可能性があります。 たとえば、拒否されたアクセス権は、許可されたアクセス権の前に常に表示する必要があります。 MutexSecurity オブジェクトは内部的に正しい順序を維持します。
セキュリティ記述子フラグの操作。リソース マネージャーの制御下でのみ必要です。
ACE フラグの無効な組み合わせを作成しています。
継承された ACE の操作。 継承と伝達は、アクセス規則と監査規則に加えた変更に応じて、リソース マネージャーによって処理されます。
ACL への意味のない ACE の挿入。
.NET セキュリティ オブジェクトでサポートされていない唯一の機能は、次のような、アプリケーション開発者の大半が回避する必要がある危険なアクティビティです。
リソース マネージャーによって通常実行される低レベルのタスク。
正規の順序を維持しない方法でアクセス制御エントリを追加または削除する。
名前付きミューテックスWindowsアクセス制御セキュリティを変更するには、メソッドをMutex.GetAccessControl使用してオブジェクトをMutexSecurity取得します。 規則を追加および削除してセキュリティ オブジェクトを変更し、メソッドを Mutex.SetAccessControl 使用して再アタッチします。
重要
オブジェクトに対して MutexSecurity 行った変更は、変更されたセキュリティ オブジェクトを名前付きミューテックスに割り当てるメソッドを呼び出 Mutex.SetAccessControl すまで、名前付きミューテックスのアクセス レベルには影響しません。
あるミューテックスから別のミューテックスにアクセス制御セキュリティをコピーするには、メソッドをMutex.GetAccessControl使用して最初のミューテックスのアクセス規則と監査規則を表すオブジェクトを取得MutexSecurityし、そのメソッドまたはオブジェクトを受け入れるMutexSecurityコンストラクターを使用Mutex.SetAccessControlして、これらの規則を 2 番目のミューテックスに割り当てます。
セキュリティ記述子定義言語 (SDDL) に投資しているユーザーは、このメソッドを SetSecurityDescriptorSddlForm 使用して名前付きミューテックスのアクセス規則を設定し GetSecurityDescriptorSddlForm 、そのメソッドを使用して SDDL 形式のアクセス規則を表す文字列を取得できます。 これは、新しい開発には推奨されません。
コンストラクター
MutexSecurity() |
MutexSecurity クラスの新しいインスタンスを既定値で初期化します。 |
MutexSecurity(String, AccessControlSections) |
指定した名前を持つシステム ミューテックスのアクセス制御セキュリティ規則のセクションを指定して、MutexSecurity クラスの新しいインスタンスを初期化します。 |
プロパティ
AccessRightType |
MutexSecurity クラスでアクセス権を表すために使用する列挙体を取得します。 |
AccessRulesModified |
この ObjectSecurity オブジェクトに関連するアクセス規則が変更されたかどうかを指定するブール値を取得または設定します。 (継承元 ObjectSecurity) |
AccessRuleType |
MutexSecurity クラスでアクセス規則を表すために使用する型を取得します。 |
AreAccessRulesCanonical |
この ObjectSecurity オブジェクトに関連するアクセス規則の順序が正規順序であるかどうかを指定するブール値を取得します。 (継承元 ObjectSecurity) |
AreAccessRulesProtected |
この ObjectSecurity オブジェクトに関連付けられている随意アクセス制御リスト (DACL) が保護されているかどうかを指定するブール値を取得します。 (継承元 ObjectSecurity) |
AreAuditRulesCanonical |
この ObjectSecurity オブジェクトに関連する監査規則の順序が正規順序であるかどうかを指定するブール値を取得します。 (継承元 ObjectSecurity) |
AreAuditRulesProtected |
この ObjectSecurity オブジェクトに関連付けられているシステム アクセス制御リスト (SACL) が保護されているかどうかを指定するブール値を取得します。 (継承元 ObjectSecurity) |
AuditRulesModified |
この ObjectSecurity オブジェクトに関連する監査規則が変更されたかどうかを指定するブール値を取得または設定します。 (継承元 ObjectSecurity) |
AuditRuleType |
MutexSecurity クラスで監査規則を表すために使用する型を取得します。 |
GroupModified |
セキュリティ保護可能なオブジェクトと関連付けられているグループが変更されているかどうかを指定するブール値を取得または設定します。 (継承元 ObjectSecurity) |
IsContainer |
この ObjectSecurity オブジェクトがコンテナー オブジェクトかどうかを指定するブール値を取得します。 (継承元 ObjectSecurity) |
IsDS |
この ObjectSecurity オブジェクトがディレクトリ オブジェクトかどうかを指定するブール値を取得します。 (継承元 ObjectSecurity) |
OwnerModified |
セキュリティ保護可能なオブジェクトの所有者が変更されているかどうかを指定するブール値を取得または設定します。 (継承元 ObjectSecurity) |
SecurityDescriptor |
このインスタンスのセキュリティ記述子を取得します。 (継承元 ObjectSecurity) |
メソッド
AccessRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AccessControlType) |
アクセス権、アクセス制御、およびフラグを指定して、指定したユーザーに対して新しいアクセス制御規則を作成します。 |
AddAccessRule(AccessRule) |
指定したアクセス規則を、この CommonObjectSecurity オブジェクトに関連付けられた随意アクセス制御リスト (DACL: Discretionary Access Control List) に追加します。 (継承元 CommonObjectSecurity) |
AddAccessRule(MutexAccessRule) |
新しい規則をマージできる、一致するアクセス制御規則を検索します。 見つからない場合は、新しい規則を追加します。 |
AddAuditRule(AuditRule) |
指定した監査規則を、この CommonObjectSecurity オブジェクトに関連付けられたシステム アクセス制御リスト (SACL: System Access Control List) に追加します。 (継承元 CommonObjectSecurity) |
AddAuditRule(MutexAuditRule) |
新しい規則をマージできる監査規則を検索します。 見つからない場合は、新しい規則を追加します。 |
AuditRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AuditFlags) |
規則の適用対象となるユーザー、監査するアクセス権、および監査規則を発生させる結果を指定して、新しい監査規則を作成します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetAccessRules(Boolean, Boolean, Type) |
指定したセキュリティ識別子に関連付けられたアクセス規則のコレクションを取得します。 (継承元 CommonObjectSecurity) |
GetAuditRules(Boolean, Boolean, Type) |
指定したセキュリティ識別子に関連付けられた監査規則のコレクションを取得します。 (継承元 CommonObjectSecurity) |
GetGroup(Type) |
指定された所有者に関連付けられているプライマリ グループを取得します。 (継承元 ObjectSecurity) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetOwner(Type) |
指定されたプライマリ グループに関連付けられている所有者を取得します。 (継承元 ObjectSecurity) |
GetSecurityDescriptorBinaryForm() |
この ObjectSecurity オブジェクトに関するセキュリティ記述子の情報を表すバイト値の配列を返します。 (継承元 ObjectSecurity) |
GetSecurityDescriptorSddlForm(AccessControlSections) |
ObjectSecurity オブジェクトに関連付けられているセキュリティ記述子の指定したセクションにあるセキュリティ記述子定義言語 (SDDL) 表現を返します。 (継承元 ObjectSecurity) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ModifyAccess(AccessControlModification, AccessRule, Boolean) |
この CommonObjectSecurity オブジェクトに関連付けられている随意アクセス制御リスト (DACL) への指定された変更を適用します。 (継承元 CommonObjectSecurity) |
ModifyAccessRule(AccessControlModification, AccessRule, Boolean) |
この ObjectSecurity オブジェクトに関連付けられている随意アクセス制御リスト (DACL) への指定された変更を適用します。 (継承元 ObjectSecurity) |
ModifyAudit(AccessControlModification, AuditRule, Boolean) |
指定された変更を、この CommonObjectSecurity オブジェクトに関連付けられているシステム アクセス制御リスト (SACL) に適用します。 (継承元 CommonObjectSecurity) |
ModifyAuditRule(AccessControlModification, AuditRule, Boolean) |
指定された変更を、この ObjectSecurity オブジェクトに関連付けられているシステム アクセス制御リスト (SACL) に適用します。 (継承元 ObjectSecurity) |
Persist(Boolean, String, AccessControlSections) |
この ObjectSecurity オブジェクトに関連付けられたセキュリティ記述子の指定されたセクションを、永続ストレージに保存します。 コンストラクターと persist メソッドに渡される |
Persist(SafeHandle, AccessControlSections) |
この NativeObjectSecurity オブジェクトに関連付けられたセキュリティ記述子の指定されたセクションを、永続ストレージに保存します。 コンストラクターと persist メソッドに渡される |
Persist(SafeHandle, AccessControlSections, Object) |
この NativeObjectSecurity オブジェクトに関連付けられたセキュリティ記述子の指定されたセクションを、永続ストレージに保存します。 コンストラクターと persist メソッドに渡される |
Persist(String, AccessControlSections) |
この NativeObjectSecurity オブジェクトに関連付けられたセキュリティ記述子の指定されたセクションを、永続ストレージに保存します。 コンストラクターと persist メソッドに渡される |
Persist(String, AccessControlSections, Object) |
この NativeObjectSecurity オブジェクトに関連付けられたセキュリティ記述子の指定されたセクションを、永続ストレージに保存します。 コンストラクターと persist メソッドに渡される |
PurgeAccessRules(IdentityReference) |
指定した IdentityReference と関連付けられているすべてのアクセス規則をすべて削除します。 (継承元 ObjectSecurity) |
PurgeAuditRules(IdentityReference) |
指定した IdentityReference と関連付けられている監査規則をすべて削除します。 (継承元 ObjectSecurity) |
ReadLock() |
読み取りアクセス用のこの ObjectSecurity オブジェクトをロックします。 (継承元 ObjectSecurity) |
ReadUnlock() |
読み取りアクセス用のこの ObjectSecurity オブジェクトをロック解除します。 (継承元 ObjectSecurity) |
RemoveAccessRule(AccessRule) |
指定したアクセス規則と同じセキュリティ識別子とアクセス マスクを含むアクセス規則を、この CommonObjectSecurity オブジェクトに関連付けられた随意アクセス制御リスト (DACL: Discretionary Access Control List) から削除します。 (継承元 CommonObjectSecurity) |
RemoveAccessRule(MutexAccessRule) |
指定した規則と同じユーザーと AccessControlType (許可または拒否)、および互換性のある継承フラグと反映フラグが指定されたアクセス制御規則が検索されます。このような規則が見つかると、指定したアクセス規則に含まれる権限がその規則から削除されます。 |
RemoveAccessRuleAll(AccessRule) |
指定したアクセス規則と同じセキュリティ識別子を含むすべてのアクセス規則を、この CommonObjectSecurity オブジェクトに関連付けられた随意アクセス制御リスト (DACL: Discretionary Access Control List) から削除します。 (継承元 CommonObjectSecurity) |
RemoveAccessRuleAll(MutexAccessRule) |
指定した規則と同じユーザーおよび同じ AccessControlType (許可または拒否) が指定されたアクセス制御規則をすべて検索し、一致する規則が見つかった場合は、その規則を削除します。 |
RemoveAccessRuleSpecific(AccessRule) |
指定したアクセス規則と完全に一致するすべてのアクセス規則を、この CommonObjectSecurity オブジェクトに関連付けられた随意アクセス制御リスト (DACL: Discretionary Access Control List) から削除します。 (継承元 CommonObjectSecurity) |
RemoveAccessRuleSpecific(MutexAccessRule) |
指定した規則に正確に一致するアクセス制御規則を検索し、見つかった場合は、その規則を削除します。 |
RemoveAuditRule(AuditRule) |
指定した監査規則と同じセキュリティ識別子とアクセス マスクを含む監査規則を、この CommonObjectSecurity オブジェクトに関連付けられたシステム アクセス制御リスト (SACL: System Access Control List) から削除します。 (継承元 CommonObjectSecurity) |
RemoveAuditRule(MutexAuditRule) |
指定した規則と同じユーザー、および互換性のある継承フラグと反映フラグが指定された監査制御規則が検索されます。互換性のある規則が見つかると、指定した規則に含まれる権限がその規則から削除されます。 |
RemoveAuditRuleAll(AuditRule) |
指定した監査規則と同じセキュリティ識別子を含むすべての監査規則を、この CommonObjectSecurity オブジェクトに関連付けられたシステム アクセス制御リスト (SACL: System Access Control List) から削除します。 (継承元 CommonObjectSecurity) |
RemoveAuditRuleAll(MutexAuditRule) |
指定した規則と同じユーザーが設定されているすべての監査規則を検索し、見つかった場合はそれらの規則を削除します。 |
RemoveAuditRuleSpecific(AuditRule) |
指定した監査規則と完全に一致するすべての監査規則を、この CommonObjectSecurity オブジェクトに関連付けられたシステム アクセス制御リスト (SACL: System Access Control List) から削除します。 (継承元 CommonObjectSecurity) |
RemoveAuditRuleSpecific(MutexAuditRule) |
指定した規則に正確に一致する監査規則を検索し、見つかった場合は、その規則を削除します。 |
ResetAccessRule(AccessRule) |
この CommonObjectSecurity オブジェクトに関連付けられた随意アクセス制御リスト (DACL: Discretionary Access Control List) 内のすべてのアクセス規則を削除し、指定したアクセス規則を追加します。 (継承元 CommonObjectSecurity) |
ResetAccessRule(MutexAccessRule) |
AccessControlType に関係なく、指定した規則と同じユーザーが指定されたすべてのアクセス制御規則を削除し、指定した規則を追加します。 |
SetAccessRule(AccessRule) |
指定したアクセス規則と同じセキュリティ識別子と修飾子を含むすべてのアクセス規則を、この CommonObjectSecurity オブジェクトに関連付けられた随意アクセス制御リスト (DACL: Discretionary Access Control List) から削除し、指定したアクセス規則を追加します。 (継承元 CommonObjectSecurity) |
SetAccessRule(MutexAccessRule) |
指定した規則と同じユーザーおよび同じ AccessControlType (許可または拒否) が指定されたすべてのアクセス制御規則を削除し、指定した規則を追加します。 |
SetAccessRuleProtection(Boolean, Boolean) |
この ObjectSecurity オブジェクトに関連付けられたアクセス規則の保護を設定または削除します。 保護されたアクセス規則を親オブジェクトが継承によって変更することはできません。 (継承元 ObjectSecurity) |
SetAuditRule(AuditRule) |
指定した監査規則と同じセキュリティ識別子と修飾子を含むすべての監査規則を、この CommonObjectSecurity オブジェクトに関連付けられたシステム アクセス制御リスト (SACL: System Access Control List) から削除し、指定した監査規則を追加します。 (継承元 CommonObjectSecurity) |
SetAuditRule(MutexAuditRule) |
AuditFlags 値に関係なく、指定した規則と同じユーザーが指定されたすべての監査規則を削除し、指定した規則を追加します。 |
SetAuditRuleProtection(Boolean, Boolean) |
この ObjectSecurity オブジェクトに関連付けられた監査規則の保護を設定または削除します。 保護された監査規則は、親オブジェクトによる継承によって変更できません。 (継承元 ObjectSecurity) |
SetGroup(IdentityReference) |
この ObjectSecurity オブジェクトに関連付けられているセキュリティ記述子のプライマリ グループを設定します。 (継承元 ObjectSecurity) |
SetOwner(IdentityReference) |
このObjectSecurity オブジェクトに関連付けられているセキュリティ記述子の所有者を設定します。 (継承元 ObjectSecurity) |
SetSecurityDescriptorBinaryForm(Byte[]) |
バイト値の指定された配列から、この ObjectSecurity オブジェクトに関するセキュリティ記述子を設定します。 (継承元 ObjectSecurity) |
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections) |
バイト値の指定された配列から、この ObjectSecurity オブジェクトに関するセキュリティ記述子の指定されたセクションを設定します。 (継承元 ObjectSecurity) |
SetSecurityDescriptorSddlForm(String) |
指定したセキュリティ記述子定義言語 (SDDL) 文字列から、ObjectSecurity オブジェクトのセキュリティ記述子を設定します。 (継承元 ObjectSecurity) |
SetSecurityDescriptorSddlForm(String, AccessControlSections) |
指定したセキュリティ記述子定義言語 (SDDL) 文字列から、ObjectSecurity オブジェクトのセキュリティ記述子の指定したセクションを設定します。 (継承元 ObjectSecurity) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
WriteLock() |
書き込みアクセス用のこの ObjectSecurity オブジェクトをロックします。 (継承元 ObjectSecurity) |
WriteUnlock() |
書き込みアクセス用にこの ObjectSecurity オブジェクトのロックを解除します。 (継承元 ObjectSecurity) |