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

时间:2016-02-17 22:03:31

标签: windows powershell permissions certificate acl

我有一个问题(希望)有人可以解释一下。 我正在编写一个Powershell脚本,它将证书导入本地计算机存储,并将Everyone组读取权限分配给证书上的私钥。

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

LogonSessionID in ACL

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

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

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


    $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。

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

1 个答案:

答案 0 :(得分:1)

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

注释掉脚本中特定于用户的部分以测试我的意思,您会注意到所有用户都被赋予只读权限,并且一切正常。