LogonSessionId帐户在新证书中分配了读访问权限?

obs*_*ete 6 windows permissions powershell acl certificate

我有一个问题(希望)有人能说清楚.我正在编写一个Powershell脚本,将证书导入本地计算机存储,并将Everyone组读取权限分配给证书上的私钥.

现在,我确实有一个可以完成此任务的工作脚本,但我注意到我有一个名为"LogonSessionId_0_some-random-number"的帐户,它为私钥上的ACL分配了读取权限,如下图所示:

ACL中的LogonSessionID

起初我以为这是我的脚本可能这样做,但当我手动导入证书时,我得到相同的结果.

有没有人见过这个或知道为什么会这样?这个帐户究竟是什么以及为什么要分配权限?我试图在这方面寻找一些答案,但是已经做得很短.

不确定它是否有帮助,但这是我的代码中导入证书并分配权限的部分:


    $sslCert = gci Cert:\LocalMachine\My | WHERE {$_.Subject -match $getCerts}
    $sslCertPrivKey = $sslCert.PrivateKey
    $privKeyCertFile = Get-Item -path "$ENV:ProgramData\Microsoft\Crypto\RSA\MachineKeys\*"  | WHERE {$_.Name -eq $sslCertPrivKey.CspKeyContainerInfo.UniqueKeyContainerName}
    $privKeyAcl = (Get-Item -Path $privKeyCertFile.FullName).GetAccessControl("Access")
    $permission = "Everyone","Read","Allow"
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
    $privKeyAcl.AddAccessRule($accessRule)
    Set-Acl $privKeyCertFile.FullName $privKeyAcl

我正在使用Windows 10 Pro.

非常感谢任何帮助/见解!

小智 2

这是因为你们的范围不同。当您在计算机级别添加某些内容时,默认情况下它会授予所有用户读取权限。有权访问该计算机的每个人都可以看到该证书。您无需显式授予用户对机器级证书的读取访问权限。就像当您安装某些程序时,他们会询问“为所有用户安装?” 如果您选择“是”,它将在计算机级别安装,每个人都可以使用它,否则它将只为您安装,并且使用不同的用户登录意味着他们将无权访问。

注释掉脚本中特定于用户的部分来测试我所说的内容,您会注意到所有用户都被授予只读权限,并且一切都会按预期工作。