G-gen の藤岡です。当記事と2回に分けて Google Cloud(旧称 GCP)の Compute Engine(以下 GCE)において、Windows Server のオンデマンドライセンスを使用した場合のライセンス認証の概要と設定について紹介します。当記事は「概要」についてです。
- はじめに
- サービスの概要
- Windows Server VM における Microsoft ライセンス
- ログから見る Windows Server VM から KMS サーバーへの通信
- KMS サーバーへアクセスできない時に認証強制をした際の挙動
はじめに
GCE で Windows Server VM を使う際は、Microsoft ライセンスの認証をする必要があります。ライセンス認証がされていない場合、以下の記事のようなエラーが出力されます。 blog.g-gen.co.jp
当記事では、上記の記事を踏まえライセンス認証の概要や確認方法について紹介します。今後の「設定編」では、外部 IP アドレスを持たない Windows Server VM でライセンス認証を行う方法 について紹介します。
サービスの概要
GCE とは
GCE は、 Google Cloud が提供する仮想サーバーのサービスです。 GCE について詳しく知りたい方は以下の記事をご参照ください。
blog.g-gen.co.jp blog.g-gen.co.jp
OS イメージ
GCE では、Debian 系や Red Hat 系の Linux ディストリビューションから Windows Server 等の OS イメージが提供されています。 イメージには無料で使えるものと、プレミアムイメージとして使用料が発生するものがあります。
当記事で扱う Windows Server はプレミアムイメージであり、プレミアムイメージの場合、Spot VM(および プリエンプティブル VM )によってイメージのコストが削減はされません。また、無料トライアルは適用されません 。
Windows Server VM における Microsoft ライセンス
認証方法
前述の通り、Windows Server VM を使う際は、Microsoft ライセンスの認証をする必要があります。 ライセンスオプションの詳細は ドキュメント に記載の通りで、当記事ではその中から Google から Windows Server のオンデマンド ライセンスを購入した場合 のライセンス認証について紹介します。
Microsoft ライセンス認証は、Windows Server VM が Windows Key Management Service(KMS)サーバーと通信することでライセンス認証および更新することができます。 Google Cloud の KMS サーバーの情報は以下の通りです。
項目 | 値 |
---|---|
エンドポイント名 | kms.windows.googlecloud.com |
IP アドレス | 35.190.247.13/32 |
ポート | 1688 |
プロトコル | TCP |
ライセンスの更新と有効期限
Windows Server VM は、KMS サーバーにアクセスをして、7日ごとにライセンスを更新 (下部キャプチャの 更新間隔 項目)します。ライセンスの有効期限は、180日です。Windows Server VM(Windows Server 2022 Datacenter) を作成直後にライセンスの認証状況を確認すると以下のようになっています(表示言語は 日本語
に変更)。
以下、一部抜粋します。
項目( 英語表記の場合) | 値(英語表記の場合) |
---|---|
ライセンスの状態 (License Status) |
ライセンスされています (Licensed) |
ボリュームライセンス認証の有効期限 (Volume activation expiration) |
180日 (180 day(s)) |
登録 KMS コンピューター名 (Registered KMS machine name) |
kms.windows.googlecloud.com:1688 |
KMS コンピューターの IP アドレス (KMS machine IP address) |
35.190.247.13 |
ライセンス認証の間隔 (Activation interval) |
120 分 (120 minutes) |
更新間隔 (Renewal Interval) |
10080 分 (10080 minutes) |
以上の有効期限や更新間隔等の結果は、Microsoft の ドキュメント に記載の通りです。
例として AWS EC2 の Windows Server VM(Windows Server 2022 Base)の場合のライセンス認証状況は以下の通りです(表示言語は 日本語
に変更)。
GCE で確認した、登録 KMS コンピューター名 と KMS コンピューターの IP アドレス が異なることが確認できます。
確認方法
Windows Server VM のライセンスの認証状況の確認方法を4種類紹介します。 全てライセンス認証されている状態の表記 です。
サーバーマネージャー
サーバーマネージャーで プロダクト ID
から確認できます。
設定
スタートメニューで 設定 > 更新とセキュリティ > ライセンス認証 から確認できます。
コマンドプロンプト
コマンドプロンプトで slmgr /dlv
を実行すると Windows Script Host が起動し、ライセンスの状態
から確認できます。
PowerShell
PowerShell で Get-CimInstance -ClassName SoftwareLicensingProduct | where {$_.PartialProductKey} | select LicenseStatus
を実行することで確認できます。
(実行例)
PS C:\Users\fujioka> Get-CimInstance -ClassName SoftwareLicensingProduct | where {$_.PartialProductKey} | select LicenseStatus LicenseStatus ------------- 1 PS C:\Users\fujioka>
LicenseStatus
の説明は ドキュメント をご参照ください。
ログから見る Windows Server VM から KMS サーバーへの通信
前提
1. KMS サーバー(35.190.247.13/32)へ 1688/tcp の下り通信を明示的に許可、ファイアウォールルールロギング を有効化したファイアウォールルール(ルール名:allow-kms-egress
)を作成
(※ 以降一部 xxxxx
として伏せ字)
fujioka@cloudshell:~ (xxxxx)$ gcloud compute firewall-rules list --filter="name='kms'" --format=json [ { "allowed": [ { "IPProtocol": "tcp", "ports": [ "1688" ] } ], "creationTimestamp": "2023-02-25T23:17:58.678-08:00", "description": "", "destinationRanges": [ "35.190.247.13/32" ], "direction": "EGRESS", "disabled": false, "id": "xxxxx", "kind": "compute#firewall", "logConfig": { "enable": true, "metadata": "INCLUDE_ALL_METADATA" }, "name": "allow-kms-egress", "network": "https://www.googleapis.com/compute/v1/projects/xxxxx/global/networks/default", "priority": 1000, "selfLink": "https://www.googleapis.com/compute/v1/projects/xxxxx/global/firewalls/allow-kms-egress" } ] fujioka@cloudshell:~ (xxxxx)$
2. 対象サブネットで VPC フローログ を有効化
logConfig
が "enable": true
になっています。サンプリングレートは 1.0(100%)としていますが、取得できるログは平均で 3% 程度のためご注意ください。
fujioka@cloudshell:~ (xxxxx)$ gcloud compute networks subnets list --filter="name='default'" --format=json | jq -r '.[] | select(.region == "https://www.googleapis.com/compute/v1/projects/${PROJECT_ID}/regions/asia-northeast1")' { "creationTimestamp": "2022-09-06T02:45:41.176-07:00", "enableFlowLogs": true, "fingerprint": "xxxxx", "gatewayAddress": "10.146.0.1", "id": "xxxxx", "ipCidrRange": "10.146.0.0/20", "kind": "compute#subnetwork", "logConfig": { "aggregationInterval": "INTERVAL_5_SEC", "enable": true, "flowSampling": 1, "metadata": "INCLUDE_ALL_METADATA" }, "name": "default", "network": "https://www.googleapis.com/compute/v1/projects/xxxxx/global/networks/default", "privateIpGoogleAccess": true, "privateIpv6GoogleAccess": "DISABLE_GOOGLE_ACCESS", "purpose": "PRIVATE", "region": "https://www.googleapis.com/compute/v1/projects/xxxxx/regions/asia-northeast1", "selfLink": "https://www.googleapis.com/compute/v1/projects/xxxxx/regions/asia-northeast1/subnetworks/default", "stackType": "IPV4_ONLY" } fujioka@cloudshell:~ (xxxxx)$
3. Windows Server VM の情報
項目 | 値 |
---|---|
VM 名 | windows-server |
内部 IP アドレス | 10.146.15.210 |
外部 IP アドレス | 34.146.103.xx |
VPC | default(デフォルトで作成されている VPC) |
次の項で Cloud Logging の出力結果を記載します。
ファイアウォールルールロギング
KMS サーバー(35.190.247.13)へアクセスしていることがわかります。
{ "insertId": "xxxxx", "jsonPayload": { "disposition": "ALLOWED", "connection": { "dest_port": 1688, "src_port": 49696, "protocol": 6, "dest_ip": "35.190.247.13", "src_ip": "10.146.15.210" }, "rule_details": { "reference": "network:default/firewall:allow-kms-egress", "destination_range": [ "35.190.247.13/32" ], "action": "ALLOW", "ip_port_info": [ { "ip_protocol": "TCP", "port_range": [ "1688" ] } ], "direction": "EGRESS", "priority": 1000 }, "remote_location": { "continent": "America", "country": "usa" }, "instance": { "project_id": "xxxxx", "region": "asia-northeast1", "vm_name": "windows-server", "zone": "asia-northeast1-b" }, "vpc": { "subnetwork_name": "default", "project_id": "xxxxx", "vpc_name": "default" } }, "resource": { "type": "gce_subnetwork", "labels": { "project_id": "xxxxx", "subnetwork_name": "default", "location": "asia-northeast1-b", "subnetwork_id": "xxxxx" } }, "timestamp": "2023-02-26T10:47:49.672982838Z", "logName": "projects/xxxxx/logs/compute.googleapis.com%2Ffirewall", "receiveTimestamp": "2023-02-26T10:47:55.869479250Z" }
VPC フローログ
同様に、KMS サーバー(35.190.247.13)へアクセスしていることがわかります。
{ "insertId": "xxxxx", "jsonPayload": { "start_time": "2023-02-26T10:47:49.687694347Z", "end_time": "2023-02-26T10:47:50.430404649Z", "src_instance": { "region": "asia-northeast1", "project_id": "xxxxx", "zone": "asia-northeast1-b", "vm_name": "windows-server" }, "connection": { "src_ip": "10.146.15.210", "dest_ip": "35.190.247.13", "protocol": 6, "dest_port": 1688, "src_port": 49696 }, "dest_location": { "continent": "America", "asn": 15169, "country": "usa" }, "packets_sent": "8", "reporter": "SRC", "src_vpc": { "vpc_name": "default", "subnetwork_name": "default", "project_id": "xxxxx" }, "bytes_sent": "0" }, "resource": { "type": "gce_subnetwork", "labels": { "location": "asia-northeast1-b", "project_id": "xxxxx", "subnetwork_id": "xxxxx", "subnetwork_name": "default" } }, "timestamp": "2023-02-26T10:48:03.213215298Z", "logName": "projects/xxxxx/logs/compute.googleapis.com%2Fvpc_flows", "receiveTimestamp": "2023-02-26T10:48:03.213215298Z" }
KMS サーバーへアクセスできない時に認証強制をした際の挙動
一時的に KMS サーバーへ下り 1688/tcp
を拒否(deny)するファイアウォールールを作成し、ライセンス認証を強制した際の挙動を確認します。以下のようなエラーが出力された場合は、KMS サーバーへアクセスができていないため、ファイアウォールルールやルートを確認してください。
TcpTestSucceeded : False
となる。
# (事前確認)PowerShell で疎通確認 PS C:\Users\fujioka> Test-NetConnection 35.190.247.13 -Port 1688 WARNING: TCP connect to (35.190.247.13 : 1688) failed ComputerName : 35.190.247.13 RemoteAddress : 35.190.247.13 RemotePort : 1688 InterfaceAlias : Ethernet SourceAddress : 10.146.15.210 PingSucceeded : True PingReplyDetails (RTT) : 1 ms TcpTestSucceeded : False
Error: 0x80070005 Access denied: the requested action requires elevated privileges
となる。
# KMS のサーバー IP アドレスを設定 PS C:\Users\fujioka> cscript \windows\system32\slmgr.vbs /skms 35.190.247.13:1688 Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. Error: 0x80070005 Access denied: the requested action requires elevated privileges PS C:\Users\fujioka>
Error: 0xC004F074 The Software Licensing Service reported that the computer could not be activated. No Key Management Service (KMS) could be contacted. Please see the Application Event Log for additional information.
となる。
# ライセンス認証を強制 PS C:\Users\fujioka> cscript \windows\system32\slmgr.vbs /ato Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. Activating Windows(R), ServerDatacenter edition (ef6cfc9f-8c5d-44ac-9aad-de6a2ea0ae03) ... Error: 0xC004F074 The Software Licensing Service reported that the computer could not be activated. No Key Management Service (KMS) could be contacted. Please see the Application Event Log for additional information. PS C:\Users\fujioka>
- 参考:ライセンスについて
藤岡 里美 (記事一覧)
クラウドソリューション部
数年前までチキン売ったりドレスショップで働いてました!2022年9月 G-gen にジョイン。ハイキューの映画を4回は見に行きたい。
Google Cloud All Certifications Engineer / Google Cloud Partner Top Engineer 2024
Follow @fujioka57621469