メインコンテンツまでスキップ

UID2 Private Operator for Azure Integration Guide

このガイドでは、Microsoft Azure のコンフィデンシャルコンピューティングオプションである Confidential Container で UID2 Operator Service をセットアップするための情報を提供します。Confidential Container(機密コンテナー)は、データ整合性、データ機密性、コード整合性などの本質的な機能を提供するハードウェア支援の実行環境(Trusted Execution Environment: TEE) で実行されます。

UID2 Operator Confidential Container の Docker コンテナが起動すると、UID2 Core Service がOperator Service と Operator Service が実行されているエンクレーブ環境の信頼性を検証するための認証プロセスが完了します。

認証が成功すると、UID2 Core Service は、安全な UID2 Operator 機密コンテナで UID2 Operator をブートストラップするために、ソルトやキーなどのシード情報を提供します。

注意

UID2 Private Operator for Azureは、以下の地域ではサポートされていません: ヨーロッパ、中国

Prerequisites

UID2 Private Operator for Azureをデプロイする前に、以下の前提条件を完了してください:

Set Up UID2 Operator Account

UID2 の連絡先に、あなたの組織を UID2 Operator として登録するよう依頼してください。相談先については、Contact Info を参照してください。

登録手続きが完了すると、以下のお知らせが届きます:

  • UID2 Service であなたを Private Operator として識別する、専用の Operator Key。設定の際には、これを OPERATOR_KEY の値として使用します。この値は、固有の識別子であると同時にパスワードでもあります。

    注記

    デプロイ環境ごとに個別の Operator Key を渡します。

  • UID2 Private Operator for Azure GitHubリリースページへのリンク。例えば、次のようになります: https://github.com/IABTechLab/uid2-operator/releases/tag/v5.21.5-68a47aec9f-azure-cc.

    注記

    これは一例です。送られたリンクを利用してください。

Install Azure CLI

Azure コマンドラインインターフェイスをインストールします。Azure ドキュメントの Azure CLI をインストールする方法 を参照してください。

Get the Required Azure Permissions

リソースグループを作成するには、サブスクリプションオーナー権限が必要です。

これが完了すると、そのリソースのリソースグループレベルのContributor(共同作成者)権限だけが必要になります。

詳細は、Azure ドキュメントの Azure ロール を参照してください。

前提条件がすべて完了したら、UID2 Private Operator をデプロイする準備が整います。Deployment を参照してください。

Deployment Environments

以下の環境が利用可能です。ベストプラクティスとして、本番環境にデプロイする前に、インテグレーション環境で実装をテストし、検証することをお勧めします。

注記

{OPERATOR_KEY} は環境ごとに別々の値になります。使用する環境に適したキーを使用してください。デプロイの成果物と処理の流れは、どちらの環境でも同じです。

EnvironmentDetails
Integration (integ)テスト専用。デバッグモードはインテグレーション環境で使用できます。
Production (prod)実稼働トラフィックの管理用。

Deployment

新しい UID2 Private Operator for Azure をデプロイするには、以下のステップを完了する必要があります:

Download ZIP File and Extract Files

最初のステップは、必要なデプロイ用ファイルをセットアップすることです。

以下の手順に従ってください:

  1. UID2 アカウントのセットアップ完了後に渡された Azure Enclave GitHub リリースページ(Set Up UID2 Operator Account を参照してください) から、デプロイに必要なファイルを含む ZIP ファイルを探してダウンロードします。ZIP ファイルの名前は以下の規則に従っています:

    uid2-operator-deployment-artifacts-{VERSION_NUMBER}-azure-cc.zip
  2. uid2-operator-deployment-artifacts-{VERSION_NUMBER}-azure-cc.zip ファイルを解凍し、デプロイに必要な以下のファイルを展開します:

    • vault.json and vault.parameters.json
    • vnet.json and vnet.parameters.json
    • operator.json and operator.parameters.json
    • gateway.json and gateway.parameters.json

Create Resource Group

Azure では、以下のコマンドを実行して、UID2 Operator を実行するリソースグループを作成します:

az group create --name {RESOURCE_GROUP_NAME} --location {LOCATION}
備考

すべてのリソースは後で {RESOURCE_GROUP_NAME} の値として指定した名前でプロビジョニングされます。

ロケーションに関していくつかの制限があります:

  • UID2 Private Operator for Azure は、以下の地域ではサポートされていません: ヨーロッパ、中国。

  • Azure 仮想ネットワークデプロイの可用性については、Azure ドキュメントの Linux コンテナー グループ を確認してください。表の 機密 SKU 列が Y に設定されているリージョンにのみデプロイできます。

Complete Key Vault and Managed Identity Setup

次のステップは、Key Vault を設定し、Operator Key を保存することです。

Key Vault を作成したら、マネージド ID を作成し、Key Vault にアクセスする権限を付与します。

後に Azure Container Instances(ACI) がこの ID でローンチされます。

以下の手順に従ってください:

  1. vault.parameters.json ファイルを以下の必須の値で更新します:

    ParameterDescription
    vaultNameOperator Key を保持する Key Vault の名前。選択する名前は、グローバルに一意でなければなりません。
    operatorKeyValueアカウント設定の際に UID チームから受け取った OPERATOR_KEY の値です (Set Up UID2 Operator Account を参照してください)。この値は固有のもので、パスワードの役割を果たします。
  2. (オプション) デフォルト値を受け入れたくない場合は、vault.parameters.json ファイルを以下の値で更新します。これらのパラメータはデフォルト値であり、ほとんどの場合、更新する必要はありません。

    ParameterDescription
    operatorIdentifierコンテナを起動するマネージド ID の名前。
    デフォルト: uid-operator.
    operatorKeyNameOperator Key の名前。
    デフォルト: operator-key.
  3. 以下のコマンドを実行し、デプロイを開始します:

    az deployment group create --name vault --resource-group {RESOURCE_GROUP_NAME} --parameters vault.parameters.json  --template-file vault.json

Set Up the VPC Network

次のステップは、VPCネットワークのセットアップです。

以下の図は、Microsoft Azure の UID2 Private Operator をホストする仮想プライベートクラウドを示しています。

VPC Network

以下の手順に従ってください:

  1. (オプション) デフォルト値を受け入れたくない場合は、vnet.parameters.json ファイルを以下の値で更新します。これらのパラメータはデフォルト値なので、ほとんどの場合、更新する必要はありません。

    ParameterDescription
    vnetName仮想ネットワーク名。
    デフォルト: unified-id-network
    computeSubnetNameUID2 Operator を実行するサブネットの名前。
    デフォルト: unified-id-subnet-operators
    gatewaySubnetNameUID2 Gateway を実行するサブネットの名前。
    デフォルト: unified-id-subnet-gateway
    VnetAddressPrefixvnet アドレスのプレフィックス。
    デフォルト: 10.0.0.0/20
    computeSubnetPrefixUID2 Operator の実行を委任されたサブネットの vnet アドレスプレフィックス。
    デフォルト: 10.0.0.0/24
    gatewaySubnetPrefixUID2 Gateway を実行するサブネットの vnet アドレスプレフィックス。
    デフォルト: 10.0.1.0/28
  2. 以下のコマンドを実行し、デプロイを開始します:

    az deployment group create --name vnet --resource-group {RESOURCE_GROUP_NAME} --parameters vnet.parameters.json  --template-file vnet.json

Complete the UID2 Private Operator Setup

次のステップは、作成した VPC サブネットワークに複数の Azure Container Instances(ACI) を立ち上げることです。

以下の手順に従ってください:

  1. operator.parameters.json ファイルを以下の必須値で更新します:

    ParameterDescription
    vaultNameOperator Key をホストする Key Vault の名前。この値は、Complete Key Vault and Managed Identity Setup で作成した名前と一致する必要があります。
    deploymentEnvironmentデプロイ先の環境を示す: integ または prod。詳細は、Deployment Environments を参照してください。
  2. (オプション) デフォルトを受け入れたくない場合は、operator.parameters.json ファイルを以下の値で更新します。これらのパラメーターにはデフォルト値があり、ほとんどの場合、更新する必要はありません。

    ParameterDescription
    operatorKeyNameOperator Key 名。この値は、Complete Key Vault and Managed Identity Setup で指定した値と一致する必要があります。デフォルトを受け入れた場合、値は operator-key となります。
    operatorIdentifierコンテナを起動するマネージド ID の名前。 Complete Key Vault and Managed Identity Setup で指定した値と一致する必要があります。デフォルトを受け入れた場合、値は uid-operator となります。
    vnetName仮想ネットワーク名。Set Up the VPC Network で指定した値と一致する必要があります。デフォルトを受け入れた場合、値は unified-id-network となります。
    computeSubnetNamePrivate Operator を実行するサブネットの名前。Set Up the VPC Network で指定した値と一致する必要があります。デフォルトを受け入れた場合、値は unified-id-subnet-operators となります。
    count立ち上げたいさせたいインスタンスの数。デフォルトは 2 となります。
  3. 以下のコマンドを実行して ACI をデプロイします:

    az deployment group create --name operator --resource-group {RESOURCE_GROUP_NAME} --parameters operator.parameters.json  --template-file operator.json
  4. 以下のコマンドを実行して、作成したACIインスタンスのIPアドレスを取得します:

    az deployment group show -g {RESOURCE_GROUP_NAME} -n operator --query properties.outputs

    出力は以下のようになるはずです:

    { "ipAddress": { "type": "Array", "value": [ "10.0.0.5", "10.0.0.4" ] } }

Set Up the Gateway Load Balancer

次のステップは Gateway Load Balancer のセットアップで、作成した ACI のプライベート IP アドレスを取得し、backend pool として使用します。

以下の手順に従ってください:

  1. gateway.parameters.json ファイルを以下の必須値で更新します:

    ParameterDescription
    containerGroupIPs作成した ACI インスタンスの IP アドレス—Complete the UID2 Private Operator Setup Step 4 で出力した値。

    例えば、更新したファイルは以下のようになります:

    "containerGroupIPs":{
    "value":[
    "10.0.0.5",
    "10.0.0.4"
    ]
    }
  2. (オプション) デフォルト値を受け入れたくない場合は、gateway.parameters.json ファイルを以下の値で更新してください。これらのパラメータはデフォルト値なので、ほとんどの場合、更新する必要はありません。

    ParameterDescription
    vnetName仮想ネットワーク名。Set Up the VPC Network で指定した値と一致する必要があります。デフォルトを受け入れた場合、値は unified-id-network となります。
    gatewaySubnetNameUID2 Gateway を実行するサブネットの名前。Set Up the VPC Network で指定した値と一致する必要があります。デフォルトを受け入れた場合、値は unified-id-subnet-gateway となります。
  3. 以下のコマンドを実行します:

    az deployment group create --name gateway --resource-group {RESOURCE_GROUP_NAME} --parameters gateway.parameters.json  --template-file gateway.json
  4. 次のコマンドを実行して、ゲートウェイロードバランサーのパブリック IP アドレスを取得します:

    az deployment group show -g {RESOURCE_GROUP_NAME} -n gateway --query properties.outputs

    出力は以下のようになるはずです:

    { "gatewayIP": { "type": "String", "value": "20.163.172.56" } }
ヒント

コンテナを更新しても、Azure バックエンドプールは新しいコンテナの IP アドレスで自動的に更新されません。解決策については、Azure ドキュメントの Azure を使用したインフラストラクチャ再構成の自動化 を参照してください。

注意

この例では HTTP を使って Gateway Load Balancer を導入していますが、SSL を設定することを強く勧めます。手順については、チュートリアル: Azure portal を使用して TLS 終端でアプリケーション ゲートウェイを構成する を参照してください。

Running the Health Check

Health Check エンドポイントを呼び出して、実装の健全性をテストします。

Health Check の実行は、エンドポイントを除いてインテグレーション環境と本番環境で同じです。

以下の手順に従ってください:

  1. ゲートウェイロードバランサーのパブリック IP アドレスを取得します—Set Up the Gateway Load Balancer Step 4 で出力したあたいです。

  2. Operator のステータスをテストするには、ブラウザでヘルスチェックのエンドポイントにアクセスします: http://{LB_IP}/ops/healthcheck.

    レスポンスボディが OK で、HTTP 200 であれば、健全なステータスを示します。

Private Operator Attestation Failure

When a private operator fails to attest with the core service, one of the following actions happens:

  • HTTP 401 response. The Private Operator terminates itself immediately.
    • Likely Causes: API key revoked or incorrect.
  • Any other non-200 response code. The Private Operator continues to function for 12 hours. If the issue is not resolved in this time frame, it terminates itself.
    • Likely Causes: Core service issues, network issues.

Private Operator hosts must have infrastructure in place to handle alerting and restarting operators in the case of an error.

Upgrading

UID2 Azure Confidential Container の新しいバージョンがリリースされると、Private Operator は、新しいリリースリンクとともに、アップデートのメール通知を受け取ります。アップグレードには期限があり、期限を過ぎると古いバージョンは無効になり、サポートされなくなります。

アップグレードするには、以下の手順を実行します:

  1. Download ZIP File and Extract Files の手順に従って、新バージョンのデプロイファイルをダウンロードし、解凍します。

  2. 新しいファイルを使用して、Complete the UID2 Private Operator Setup の指示に従って、新しいバージョンの ACI をデプロイします。

  3. Set Up the Gateway Load Balancer の指示に従って、新しい ACI をバックエンドプールに追加します。

  4. 新しい ACI の健全性を確認し、以下の例に示すようにステータスが健全であることを確認すします:

    az network application-gateway show-backend-health --resource-group {RESOURCE_GROUP_NAME} --name uid-operator-gateway
  5. ゲートウェイロードバランサーから古い ACI をクリーンアップします: Set Up the Gateway Load Balancer の指示に従って、バックエンドプールから古い ACI を削除します。

  6. 以下のコマンドを実行して、古い ACI をシャットダウンします:

    for i in {0..COUNT}; az container delete --name uid-operator-OLD-VERSION-$i --resource-group {RESOURCE_GROUP} --yes