前不久给公司搭测试环境,其中涉及到了某组件在容器中使用 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相关推荐

  1. 在Linux和Windows的Docker容器中运行ASP.NET Core

    译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇 ...

  2. Microsoft 推出在AzureApp Service上支持Windows容器的公开预览版

    微软宣布推出了在Azure App Service上支持Windows容器的公开预览版,该预览版对安装到App Service环境中的内容提供了更多的控制.这个声明扩展了容器服务的web应用程序的功能 ...

  3. 微软 SQL Server 2016 SP1 开发者版入驻 Windows 容器

    2月22日有消息称微软今天宣布在Windows Containers容器中上线SQL Server2016 SP1开发者版.用户可以在Docker Hub中找到镜像,可用于Windows Server ...

  4. win10 删除旧系统windows文件夹,提示需要管理员权限,更改时无法枚举容器中的对象,访问被拒绝,怎么也删不了

    环景: win10 专业版 技嘉台式机 问题描述: 新装固态硬盘,安装win10后,机械上旧系统文件夹想删除,提示需要管理员权限,更改时无法枚举容器中的对象,访问被拒绝,已经是管理员账户了,用了文件粉 ...

  5. 查看docker内部路径_web应用在Docker容器中部署(Windows)

    前言 容器化是软件开发的一种方法,通过该方法可将应用程序或服务.其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像. 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操 ...

  6. Docker容器中挂载NFS共享目录

    之前在https://blog.csdn.net/fengbingchun/article/details/110561129 介绍过使用Dockerfile构建ubuntu 16.04镜像,并在容器 ...

  7. Docker容器中数据两种持久化存储方式:卷和挂载宿主目录

    镜像使用的是分层存储,容器也是如此.每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层.容器存储层的生存周期和容器一样,容器消 ...

  8. Docker容器中MySQL最大连接数被限制为214的解决方案

    Docker容器中MySQL最大连接数被限制为214的解决方案 原文:Docker容器中MySQL最大连接数被限制为214的解决方案 一.背景 话说笔者在上次的博客里简单的讲了一下调整MySQL最大连 ...

  9. 正确使用Windows Azure 中的VM Role

    公告    :本博客为微软云计算中文博客  的镜像博客.   部分文章因为博客兼容性问题  ,会影响阅读体验  .如遇此情况,请访问  原博客    . 在2010 PDC大会上,我们介绍了Windo ...

  10. .NET程序在Linux容器中的演变

    本文讲的是.NET程序在Linux容器中的演变[编者的话]Linux容器技术已被开发人员所熟知,现在.NET程序可以跑在Docker容器中,这为以Windows中心的开发人员带来了好处. [上海站|3 ...

最新文章

  1. 联想架构调整:智能手机业务很重要
  2. 一些极其简易的自动巡线车模
  3. mysql语句大全 新浪博客_MySQL语句入门
  4. 六十.完全分布式 、 节点管理 、 NFS网关
  5. C++中内存分配、函数调用和返回值问题
  6. js获取网页面的高度和宽度
  7. 通过加载 QSS 文件的方式美化 QT 界面
  8. P1552-[APIO2012]派遣【左偏树】
  9. Python档案袋( 命令行操作 及 Os与Shutil文件操作补充 )
  10. 信息学奥赛C++语言:打擂台
  11. python3重写new方法_Python 3.8 新功能一览
  12. swift. 扩展类添加属性_Swift快速为类扩展属性
  13. iPhone 7 P适合什么系统?
  14. 7.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 日志收集与分析
  15. 小胖月安卓版,随机选号、叫号功能,互动功能
  16. 【PC微信探秘】用易语言编写一个微信DLL注入器
  17. AUTOCAD——LEN命令
  18. Android 开机权限默认授予Runtime权限
  19. 第三单元 :资本成本笔记
  20. Java大牛呕心沥血经历——技术面试与HR谈薪资技巧

热门文章

  1. 简述旋转编码器的工作原理_绝对值编码器工作原理以及故障处理方法有哪些?...
  2. Python_Django_01_day
  3. 定时任务莫名停止,Spring 定时任务存在 Bug??
  4. 如果有人问你 Dubbo 中注册中心工作原理,就把这篇文章给他
  5. CentOS/Ubuntu 14.10 安装 phpstorm
  6. nginx 域名跳转
  7. SSH2-Spring Framework2 struts2 hibernate
  8. shell初级-----更多结构化命令
  9. javascript原型继承圣杯模式
  10. sql server book