見出し画像

コードネームは gMSA

グループ管理サービスアカウント -- コードネームは gMSA です

gMSA - グループ管理サービスアカウント、Active Directory で管理されるアカウントになります
このアカウントの特長は 何といっても強力なパスワードが自動管理されること!
強力なパスワードが自動生成され、Active Directory ドメインのメンバーコンピューターで使用できるわけです

グループ管理サービス アカウントをセキュリティで保護する

gMSA は、管理オーバーヘッドを削減するのに役立つ、セキュリティが強化された ID ソリューションです。
  ・ 強力なパスワードの設定 - ランダムに生成される 240 バイトのパスワード: 長くて複雑な gMSA パスワードより、ブルート フォース攻撃や辞書攻撃による侵害の可能性を最小限に抑えます。
  ・ パスワードの定期的な循環 - パスワード管理は Windows OS に移行し、30 日ごとにパスワードが変更されます。 サービス管理者とドメイン管理者が、パスワードの変更をスケジュールしたり、サービス停止を管理したりする必要はありません。
  ・ サーバー ファームへのデプロイのサポート - gMSA を複数のサーバーにデプロイして、複数のホストで同じサービスが実行される負荷分散ソリューションをサポートします。
  ・ 簡略化されたサービス プリンシパル名 (SPN) 管理のサポート - アカウントの作成時に PowerShell を使用して SPN を設定します。
       。また、gMSA のアクセス許可が正しく設定されていれば、自動 SPN 登録がサポートされているサービスでは、gMSA に対してそれを行うことができます。

この gMSA を AWS Managed Microsoft AD で作成してみます
AWS Managed Microsoft AD での gMSA の作成については AWS ブログがあります

How AWS Managed Microsoft AD Helps to Simplify the Deployment and Improve the Security of Active Directory?Integrated .NET Applications

作成手順を見てみます

1. Create your AWS Managed Microsoft AD.
2. Create your Amazon RDS for SQL Server database.
3. Create a gMSA for your .NET application.
4. Deploy your .NET application.
5. Configure your .NET application to use the gMSA.
6. Configure KCD for your .NET application.

この手順、KDS ルート キーの作成がありません

キー配布サービス KDS ルート キーの作成

この IT 担当者向けの記事では、Windows Server 2012 以降でグループの管理されたサービス アカウント パスワードを生成するために、Windows PowerShell を使用してドメイン コントローラーで Microsoft キー配布サービス (kdssvc.dll) のルート キーを作成する方法について説明します。

gMSA のアカウントのパスワードは自動生成されます
そのための KDS ルート キーは必須です
通常 ユーザーはこの KDS ルート キーの作成から行う必要があります
その手順がないとは…

どげんなっとるばぃ?

なんと!
AWS Managed Microsoft AD ではこのキーができていたりするのだ

確認してみましょう
KDS ルート キーは CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration, DN=**** に作成されています 

> Get-ADObject -Filter 'ObjectClass -like "*"' -searchbase 'CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=ad, DC=net'

DistinguishedName                                                                                                                       Name             ObjectClass ObjectGUID
-----------------                                                                                                                       ----             ----------- ----------
CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=ad,DC=net                                         Master Root Keys container   e********-****-****-****-********
CN=********-****-****-****-********,CN=Master Root Keys,CN=Group Key Distribution Service,CN=Services,CN=Configuration,DC=ad,DC=net                                                                                                                 

ホントだ いたわ…

KDS ルート キーの存在が無事確認できたので、gMSA だけ作成することにします
そぉそぉ gMSA は CN=gMSAexample,CN=Managed Service Accounts, DN=**** に作成されます

作成には PowerShell の New-ADServiceAccount コマンドレットを使用します

New-ADServiceAccount -name gMSAexample
                     -DNSHostName <サービスの DNS ホスト名>
                     -PrincipalsAllowedToRetrieveManagedPassword <メンバー ホストのコンピューター アカウントまたはメンバー ホストが属するセキュリティ グループ>

セキュリティグループで指定すれば メンバーコンピューターをセキュリティグループに入れてやるだけで個別指定の必要はありません
AWS Managed Microsoft AD ではこちらが推奨のようです

とゆーわけで作ってみた

まず対象のセキュリティグループを作成します
セキュリティグループ名はブログにあった App_server_grp としました
(考えるのがメンド―だったとかいわナイ)

> New-ADGroup -Name App_server_grp `
              -Groupscope Global `
              -Path "ou=Users, ou=ad, dc=ad, dc=net"

作成したセキュリティグループにメンバーコンピューターを追加します

> Add-ADGroupMember -Identity App_server_grp -Members EC2AMAZ-******$

メンバーコンピューター名の最後には $ を付けてあげましょう

では gMSA を作成し 対象にセキュリティグループを指定します

> New-ADServiceAccount -name gMSAexample -DNSHostName ad.net -PrincipalsAllowedToRetrieveManagedPassword App_server_grp

できた!

> Get-ADServiceAccount -Filter 'Name -eq "gMSAexample"'

DistinguishedName : CN=gMSAexample,CN=Managed Service Accounts,DC=ad,DC=net
Enabled           : True
Name              : gMSAexample
ObjectClass       : msDS-GroupManagedServiceAccount
ObjectGUID        : ********-****-****-****-********
SamAccountName    : gMSAexample$
SID               : S-*-*-**-**********-********-*********-****
UserPrincipalName :

これをサービスアカウントに使ったり スクリプトの実行ユーザーに使ったりできるわけです

いろいろ試してみてくださいね♪

この記事が気に入ったらサポートをしてみませんか?