[24]Window PowerShell DSC学习系列---- 如何保护MOF文件里面存储的密码?
在上节笔者分享了[23]Window PowerShell DSC学习系列---- MOF文件能存储用户的密码吗?MOF文件里面能直接存储明文密码,这样是非常不安全的。那么有什么方式能够把MOF里面存储的明文密码通过某种方式进行加密,从而存储成密文的形式。答案是“Yes”。PowerShell DSC提供了一种通过SSL证书加密MOF文件里面的密码的功能。 具体的流程,请见下图。
本图片引用于https://msdn.microsoft.com/en-us/powershell/dsc/securemof
@第1步 生成密钥对
首先找一台Window 10的机器,然打开PowerShell,输入下面的命令,生成一个公私钥对。
$cert = New-SelfSignedCertificate -Type DocumentEncryptionCertLegacyCsp -DnsName 'DscEncryptionCert' -HashAlgorithm SHA256
$mypwd = ConvertTo-SecureString -String "password" -Force -AsPlainText
$cert | Export-PfxCertificate -FilePath "c:\certs\DscPrivateKey.pfx" -Password $mypwd -Force
$cert | Export-Certificate -FilePath "c:\certs\DscPublicKey.cer" -Force
$cert | Remove-Item -Force
@第2步 公钥导入Pull服务器,私钥导入目标客户端节点
对于证书指纹(ThumbPrint);可以通过下面的命令查看其ThumbPrint
configuration PullClientConfigNames
{
Node localhost
{
Settings
{
RefreshMode = 'Pull'
ConfigurationMode = "ApplyAndAutocorrect"
RebootNodeIfNeeded = $true
DebugMode='ForceModuleImport'
CertificateID = '737C5BCA86E3096A28BE1B7E0C36A2D83DA80FE2'
}
ConfigurationRepositoryWeb pserver.example.com
{
ServerURL = 'http://pserver.example.com:8080/PSDSCPullServer.svc'
RegistrationKey = '2cfefa66-8a92-4e3d-88cd-9048209fde73'
ConfigurationNames ='unzipFile'
AllowUnsecureConnection = $true
}
ReportServerWeb pserver.example.com
{
ServerURL = 'http://pserver.example.com:8080/PSDSCPullServer.svc'
RegistrationKey = '2cfefa66-8a92-4e3d-88cd-9048209fde73'
AllowUnsecureConnection = $true
}
}
}
PullClientConfigNames
@第3步 在Pull服务器端,使用公钥加密密码
$username = "User1"
[PSCredential] $credential = New-Object System.Management.Automation.PSCredential($username,$password)
Configuration ChangeCmdBackGroundColor
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node $AllNodes.NodeName
{
Registry CmdPath
{
Key = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor'
ValueName = 'DefaultColor'
ValueData = '1F'
ValueType = 'DWORD'
Ensure = 'Present'
Force = $true
Hex = $true
PsDscRunAsCredential = $credential
}
}
}
$configData = @{
AllNodes = @(
@{
NodeName = 'dscClient-01';
PSDscAllowPlainTextPassword = $true
}
)
}
ChangeCmdBackGroundColor -ConfigurationData $configData
$username = "User1"
[PSCredential] $credential = New-Object System.Management.Automation.PSCredential($username,$password)
Configuration ChangeCmdBackGroundColor
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node $AllNodes.NodeName
{
Registry CmdPath
{
Key = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor'
ValueName = 'DefaultColor'
ValueData = '1F'
ValueType = 'DWORD'
Ensure = 'Present'
Force = $true
Hex = $true
PsDscRunAsCredential = $credential
}
}
}
$configData = @{
AllNodes = @(
@{
NodeName = 'dscClient-01';
#PSDscAllowPlainTextPassword = $true
CertificateFile = "C:\certs\DscPublicKey.cer"
Thumbprint = "737C5BCA86E3096A28BE1B7E0C36A2D83DA80FE2"
}
)
}
ChangeCmdBackGroundColor -ConfigurationData $configData
{
Password = "-----BEGIN CMS-----\nMIIBtAYJKoZIhvcNAQcDoIIBpTCCAaECAQAxggFMMIIBSAIBADAwMBwxGjAYBgNVBAMMEURzY0Vu\nY3J5cHRpb25DZXJ0AhAgQGGLMi/7rE8We7FUILK/MA0GCSqGSIb3DQEBBzAABIIBAE5YFXGEUB3e\n5vleh7+9INfO10yZ/6aCT2VoIm+EKnzPKj5syP1C9Wi9KGToGu+y31LPfKKZqF5esaEHDgZFOj9E\nyA+mTwUEu0HGViGLxpSPignOhsMLBEwXlfaZWTbUJbkjP3XMy0CHmHRPwRVC5JYg9uLZECCqd16p\nOxxHlDr4ZGDmLL5PY3zSENZ34NRowisxtE3PwZP+2sVj/MLrN8F6jBecyzqsAr3cqmZqZJ0HqL7f\nAE3dEQa0zYAmZoQL1zM8ISZ2CGwbTrmvMQweSqIprZyEaaPCD3puvLkh89osTjW1Yx4oDDKm/pW0\n87w+/8AcVx7IfDO9juRoynHSJYwwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBKgQQb8eEXvkc1Pjz\n01fOf5l3WYAgA92DTXKQNPAGqbLvbOiP/bq+jerL+8LiSslvhKcof1o=\n-----END CMS-----";
UserName = "User1";
};
instance of MSFT_RegistryResource as $MSFT_RegistryResource1ref
{
ResourceID = "[Registry]CmdPath";
ValueName = "DefaultColor";
PsDscRunAsCredential = $MSFT_Credential1ref;
Key = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Command Processor";
Ensure = "Present";
Force = True;
SourceInfo = "C:\\DSC\\ChangeCmdBackGroundColor.ps1::10::9::Registry";
ValueType = "Dword";
ModuleName = "PSDesiredStateConfiguration";
ValueData = {
"1F"
};
Hex = True;
ModuleVersion = "0.0";
ConfigurationName = "ChangeCmdBackGroundColor";
};
instance of OMI_ConfigurationDocument
{
Version="2.0.0";
MinimumCompatibleVersion = "2.0.0";
CompatibleVersionAdditionalProperties= {"Omi_BaseResource:ConfigurationName"};
Author="Admin";
GenerationDate="02/24/2017 07:03:59";
GenerationHost="PULL51W2K12NSSL";
ContentType="PasswordEncrypted";
Name="ChangeCmdBackGroundColor";
};
[24]Window PowerShell DSC学习系列---- 如何保护MOF文件里面存储的密码?相关推荐
- [3] Window PowerShell DSC 学习系列----如何在PowerShell DSC 5.x 安装最新的DSC Module?
在PowerShell DSC 4.0的版本的时候,所有的resource Kit必须从一个网站上下载,然后拷贝到相应的目录,比如 PS C:\Users\rodneyzhu.BEIJING> ...
- [18] Window PowerShell DSC学习系列---- 如何区分WMF4.0和WMF 5.0?
我们知道PowerShell DSC是WMF中一部分.那么如何区分机器上装的是WMF4.0还是WMF 5.0? 执行下面的命令: Get-Command -Module PSDesiredStateC ...
- [2] Window PowerShell DSC 学习系列----DSC的资源(Resource)以及配置和格式(Configuration Sytax )
这个章节主要来讲述DSC的资源(Resource)以及配置和格式(Configuration && Sytax ). #1 DSC 资源(The DSC resources) 简单的来 ...
- [29] Window PowerShell DSC 学习系列----如何备份数据库和解决一个MS Server 2008上的大坑?
有的时候我们需要定期的备份数据库,而DSC刚好就能非常好的做这个事情.DSC中有一个xSQLServer Module,里面提供了许多操作数据库的方法.但是里面没有任何一个DSC Resource能够 ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习系列(六)(模块)
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: ...
- 机器学习与深度学习系列连载(NTU-Machine Learning, cs229, cs231n, cs224n, cs294):欢迎进入机器学习的世界
欢迎进入机器学习的世界 本教程是根据台湾大学李弘毅老师的课程机器学习课程,斯坦福大学CS229.CS231N.CS224N.CS20i.伦敦大学学院 ([UCL-Course])(http://www ...
- maven学习系列8----将resources目录下的文件打包到jar包外
maven默认情况下会把src/main/resources下的文件和class文件一起打到jar包内部,但是有很多场景下都需要把resources下的文件打包到jar包外面,这样修改resource ...
- Python: 学习系列之七:模块、PIPY及Anaconda
系列 Python: 学习系列之一:Python能做什么 Python: 学习系列之二:基础介绍(int/float/string/range/list/tuple/dict/set) Python: ...
- ExtJs2.0学习系列(3)--Ext.Window
ExtJs2.0学习系列(3)--Ext.Window 前言:关于extjs,为了照顾还没有入门的新手,我给一点提示,有一个网站浪曦视频在线里面请了个老师录制了extjs的介绍入门的视频,环境可能不同 ...
最新文章
- Kali Linux安装第三方软件
- EFI启动PE加Linux,macOS安装盘制作并添加EFI和WinPE
- python信息管理系统统计功能_用Python实现职工信息管理系统
- Add-in Express for Office and .NET v7.3支持VS 2013预览
- 一张图看懂AR至GL数据流
- 【静态站点(二)】之 Gridsome 基础
- SharePoint自动化部署,利用PowerShell 导入用户至AD——PART II
- wd my book essential 不显示盘符_江西大规格WD无伸缩短式万向联轴器供应
- 如何在SQL Server中自动进行表分区
- javascript闭包小结
- Python 基礎 - 變量
- 一个合理的生产环境的 Web 应用程序应该是什么样子的
- C++ HOOK实现全局键盘钩子的详细过程
- ant design入门_Umi + ant Design Pro最简单的入门教程(一)初
- YouTube如何开启双语显示
- Cloud Native 演进可行性研究
- c语言fflush,c语言中fflush(stdin)作用(转)
- HEVC Tile 编码器-kvazaar
- python文件write原理,Python写入文件(write和writelines)详解
- Tensorflow笔记(八)——Estimator