在 Windows 容器中使用 gMSA
前不久给公司搭测试环境,其中涉及到了某组件在容器中使用 kerberos 身份验证连接 SQL Server 数据库的问题。
Windows 容器本身并不能加入域,但可以通过 gMSA 运行容器使容器进程拥有 gMSA 的身份,这样一来只需要在 SQL Server 里添加此 gMSA 的 login 就可以达成目的。注意必须使用 gMSA,普通 MSA 帐号在容器中使用会出问题。
第一次创建 gMSA 帐号前,需要先创建 KDS(Key Distribute Service)根密钥(如已创建,可忽略此步骤):
Add-KDSRootKey –EffectiveImmediately
然后,你需要等待漫长的 10 个小时,完成密钥的复制……好吧,如果是做实验,可以如此省略这 10 个小时:
Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
创建 gMSA:
New-ADServiceAccount -Name Service1 -DNSHostName service1.contoso.com -PrincipalsAllowedToRetrieveManagedPassword [ComputerName1$, ComputerName2$...] -KerberosEncryptionType RC4, AES128, AES256
其中 -DNSHostName 只是一个 group 的名字,不需要把它加入到你的 DNS 中。 -PrincipalsAllowedToRetrieveManagedPassword 则是 host 你的容器的服务器名,注意 AD 上计算机名也是一个帐户,所以后边要加“$”。
下一步,要在容器的 host 上安装 gMSA
1 // 安装 AD 的 PowerShell Module 2 Install-WindowsFeature RSAT-AD-PowerShell 3 4 // 安装 gMSA 5 Install-ADServiceAccount Service1 6 7 // 测试 8 Test-ADServiceAccount Service1 9 10 // 显示 “True” 测试通过
接下来,要在容器中使用 gMSA,需要为 docker 创建 CredentialSpec,我们需要 Virtualization-Documentation 中的 CredentialSpec.psm1,它在 Virtualization-Documentation/windows-server-container-tools/ServiceAccounts 中,你可以选择把整个项目 clone 下来,或者新建名为 CredentialSpec.psm1 的文本文件,然后将文件内容粘进去。然后,执行以下 PS 命令:
1 Import-Module ./CredentialSpec.psm1 2 New-CredentialSpec -Name Service1 -AccountName Service1
接下来,可以运行容器了:
docker run -it --security-opt "credentialspec=file://Service1.json" microsoft/windowsservercore nltest /parentdomain
输出你的 AD 名称,说明运行成功。
转载于:https://www.cnblogs.com/lighterz/p/7749752.html
在 Windows 容器中使用 gMSA相关推荐
- 在Linux和Windows的Docker容器中运行ASP.NET Core
译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇 ...
- Microsoft 推出在AzureApp Service上支持Windows容器的公开预览版
微软宣布推出了在Azure App Service上支持Windows容器的公开预览版,该预览版对安装到App Service环境中的内容提供了更多的控制.这个声明扩展了容器服务的web应用程序的功能 ...
- 微软 SQL Server 2016 SP1 开发者版入驻 Windows 容器
2月22日有消息称微软今天宣布在Windows Containers容器中上线SQL Server2016 SP1开发者版.用户可以在Docker Hub中找到镜像,可用于Windows Server ...
- win10 删除旧系统windows文件夹,提示需要管理员权限,更改时无法枚举容器中的对象,访问被拒绝,怎么也删不了
环景: win10 专业版 技嘉台式机 问题描述: 新装固态硬盘,安装win10后,机械上旧系统文件夹想删除,提示需要管理员权限,更改时无法枚举容器中的对象,访问被拒绝,已经是管理员账户了,用了文件粉 ...
- 查看docker内部路径_web应用在Docker容器中部署(Windows)
前言 容器化是软件开发的一种方法,通过该方法可将应用程序或服务.其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像. 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操 ...
- Docker容器中挂载NFS共享目录
之前在https://blog.csdn.net/fengbingchun/article/details/110561129 介绍过使用Dockerfile构建ubuntu 16.04镜像,并在容器 ...
- Docker容器中数据两种持久化存储方式:卷和挂载宿主目录
镜像使用的是分层存储,容器也是如此.每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层.容器存储层的生存周期和容器一样,容器消 ...
- Docker容器中MySQL最大连接数被限制为214的解决方案
Docker容器中MySQL最大连接数被限制为214的解决方案 原文:Docker容器中MySQL最大连接数被限制为214的解决方案 一.背景 话说笔者在上次的博客里简单的讲了一下调整MySQL最大连 ...
- 正确使用Windows Azure 中的VM Role
公告 :本博客为微软云计算中文博客 的镜像博客. 部分文章因为博客兼容性问题 ,会影响阅读体验 .如遇此情况,请访问 原博客 . 在2010 PDC大会上,我们介绍了Windo ...
- .NET程序在Linux容器中的演变
本文讲的是.NET程序在Linux容器中的演变[编者的话]Linux容器技术已被开发人员所熟知,现在.NET程序可以跑在Docker容器中,这为以Windows中心的开发人员带来了好处. [上海站|3 ...
最新文章
- 联想架构调整:智能手机业务很重要
- 一些极其简易的自动巡线车模
- mysql语句大全 新浪博客_MySQL语句入门
- 六十.完全分布式 、 节点管理 、 NFS网关
- C++中内存分配、函数调用和返回值问题
- js获取网页面的高度和宽度
- 通过加载 QSS 文件的方式美化 QT 界面
- P1552-[APIO2012]派遣【左偏树】
- Python档案袋( 命令行操作 及 Os与Shutil文件操作补充 )
- 信息学奥赛C++语言:打擂台
- python3重写new方法_Python 3.8 新功能一览
- swift. 扩展类添加属性_Swift快速为类扩展属性
- iPhone 7 P适合什么系统?
- 7.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 日志收集与分析
- 小胖月安卓版,随机选号、叫号功能,互动功能
- 【PC微信探秘】用易语言编写一个微信DLL注入器
- AUTOCAD——LEN命令
- Android 开机权限默认授予Runtime权限
- 第三单元 :资本成本笔记
- Java大牛呕心沥血经历——技术面试与HR谈薪资技巧
热门文章
- 简述旋转编码器的工作原理_绝对值编码器工作原理以及故障处理方法有哪些?...
- Python_Django_01_day
- 定时任务莫名停止,Spring 定时任务存在 Bug??
- 如果有人问你 Dubbo 中注册中心工作原理,就把这篇文章给他
- CentOS/Ubuntu 14.10 安装 phpstorm
- nginx 域名跳转
- SSH2-Spring Framework2 struts2 hibernate
- shell初级-----更多结构化命令
- javascript原型继承圣杯模式
- sql server book