Windows Server VMのライセンス認証(概要編)

記事タイトルとURLをコピーする

G-gen の藤岡です。当記事と2回に分けて Google Cloud(旧称 GCP)の Compute Engine(以下 GCE)において、Windows Server のオンデマンドライセンスを使用した場合のライセンス認証の概要と設定について紹介します。当記事は「概要」についてです。

はじめに

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) を作成直後にライセンスの認証状況を確認すると以下のようになっています(表示言語は 日本語 に変更)。

認証状況(GCE)

以下、一部抜粋します。

項目( 英語表記の場合) 値(英語表記の場合)
ライセンスの状態
(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 アドレス が異なることが確認できます。

認証状況(EC2)

確認方法

Windows Server VM のライセンスの認証状況の確認方法を4種類紹介します。 全てライセンス認証されている状態の表記 です。

サーバーマネージャー

サーバーマネージャーで プロダクト ID から確認できます。

サーバーマネージャーで確認

設定

スタートメニューで 設定 > 更新とセキュリティ > ライセンス認証 から確認できます。

設定から確認

コマンドプロンプト

コマンドプロンプトで slmgr /dlv を実行すると Windows Script Host が起動し、ライセンスの状態 から確認できます。

コマンドプロンプトで確認

PowerShell

PowerShell で Get-CimInstance -ClassName SoftwareLicensingProduct | where {$_.PartialProductKey} | select LicenseStatus を実行することで確認できます。

PowerShell で確認

(実行例)

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