Microsoft Entra ID でローカル監視ツールを使用できるようにする

Azure Private 5G Core には、エッジでのデプロイを監視するための分散トレース ツールおよびパケット コア ダッシュボードツールが用意されています。 これらのツールには、Microsoft Entra ID またはローカルのユーザー名とパスワードを使用してアクセスできます。 デプロイのセキュリティを向上させるために、Microsoft Entra 認証を設定することをお勧めします。

このハウツー ガイドでは、Microsoft Entra ID を使用してローカル監視ツールへのアクセスを認証するサイトをデプロイまたは構成した後に完了する必要がある手順を実行します。 分散トレースおよびパケット コア ダッシュボードにアクセスするためにローカルのユーザー名とパスワードを使用することにした場合は、これに従う必要はありません。

注意事項

ローカル監視ツールの Microsoft Entra ID は、Azure Private 5G Core が実行されている Azure Stack Edge デバイスで Web プロキシが有効になっている場合はサポートされません。 Web プロキシ経由で送信されないトラフィックをブロックするファイアウォールを構成した場合、Microsoft Entra ID を有効にすると、Azure Private 5G Core のインストールが失敗します。

前提条件

ローカル監視 IP 用にドメイン システム名 (DNS) を構成する

アプリケーションを登録してリダイレクト URI を構成するときは、ローカル監視ツールにアクセスするための IP アドレスではなく、ドメイン名を含めるためにリダイレクト URI が必要です。

DNS レコードを作成する DNS ゾーンの権限のある DNS サーバーで、「Management network (管理ネットワーク)」で設定したローカル監視ツールへのアクセスに使用される IP アドレスにドメイン名が解決するように DNS レコードを構成します。

アプリケーションの登録

次に、新しいローカル監視アプリケーションを Microsoft Entra ID に登録して、Microsoft ID プラットフォームとの信頼関係を確立します。

デプロイに複数のサイトが含まれている場合は、すべてのサイトに同じ 2 つのリダイレクト URI を使用するか、サイトごとに異なる URI ペアを作成できます。 サイトごとに最大 2 つのリダイレクト URI を構成できます。 デプロイ用のアプリケーションを既に登録していて、サイト間で同じ URI を使用する場合は、この手順をスキップできます。

Note

以下の手順では、分散トレースとパケット コア ダッシュボードの両方に 1 つのアプリケーションを使用することを前提としています。 これらの 2 つのツールに異なるユーザー グループへのアクセス権を付与する場合、代わりに、アプリケーションをパケット コア ダッシュボード ロールに 1 つ、分散トレース ロールに 1 つ設定できます。

  1. クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」に従い、ローカル監視ツール用の新しいアプリケーションを Microsoft ID プラットフォームに登録します。

    1. リダイレクト URI を追加する」で、[Web] プラットフォームを選択し、以下の 2 つのリダイレクト URI を追加します。ここで<local monitoring domain> は、「ローカル監視 IP 用にドメイン システム名 (DNS) を構成する」で設定したローカル監視ツールのドメイン名です。

      • https://<local monitoring domain>/sas/auth/aad/callback
      • https://<local monitoring domain>/grafana/login/azuread
    2. 手順に従って、[資格情報を追加する] にクライアント シークレットを追加します。 このフィールドはシークレットの作成直後にのみ使用できるようになるので、必ず [値] 列の下にシークレットを記録してください。 これは、この手順の後半で必要になる [クライアント シークレット] の値です。

  2. アプリ ロール UI」に従って、次の構成でアプリケーションのロールを作成します。

    • [Allowed member types]\(許可されるメンバーの種類\) で、[ユーザー/グループ] を選択します。
    • [値] で、作成する各ロールに [管理者][ビューアー][エディター] のいずれかを入力します。 分散トレースについては、sas.user ロールも必要です。
    • [このアプリ ロールを有効にしますか?] で、チェック ボックスがオンになっていることを確認します。

    パケット コア ダッシュボードと分散トレース ツールへのアクセスを管理するときに、これらのロールを使用できます。

  3. ユーザーとグループをロールに割り当てるに従って、作成したロールにユーザーとグループを割り当てます。

Kubernetes シークレット オブジェクトの情報を収集する

  1. 次の表に示す値を収集します。

    収集方法 Kubernetes シークレット パラメーター名
    テナント ID Azure portal で、Microsoft Entra ID を検索します。 [テナント ID] フィールドは、[概要] ページにあります。 tenant_id
    アプリケーション (クライアント) ID 先ほど作成した新しいローカル監視アプリの登録に移動します。 アプリケーション (クライアント) ID フィールドは、[概要] ページの [Essentials] 見出しにあります。 client_id
    Authorization URL (承認 URL) ローカル監視アプリ登録の [概要] ページで、[エンドポイント] を選択します。 [OAuth 2.0 承認エンドポイント (v2)] フィールドの内容をコピーします。

    :
    文字列に organizations が含まれている場合は、organizations をテナント ID 値に置き換えます。 たとえば、 のように指定します。
    https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize

    https://login.microsoftonline.com/72f998bf-86f1-31af-91ab-2d7cd001db56/oauth2/v2.0/authorize
    auth_url
    Token URL (トークン URL) ローカル監視アプリ登録の [概要] ページで、[エンドポイント] を選択します。 [OAuth 2.0 トークン エンドポイント (v2)] フィールドの内容をコピーします。

    :
    文字列に organizations が含まれている場合は、organizations をテナント ID 値に置き換えます。 たとえば、 のように指定します。
    https://login.microsoftonline.com/organizations/oauth2/v2.0/token

    https://login.microsoftonline.com/72f998bf-86f1-31af-91ab-2d7cd001db56/oauth2/v2.0/token
    token_url
    クライアント シークレット これは、前の手順でクライアント シークレットを作成するときに収集しました。 client_secret
    分散トレースのリダイレクト URI ルート リダイレクト URI の次の部分を書き留めます: https://<ローカル監視ドメイン> redirect_uri_root
    パケット コア ダッシュボードのリダイレクト URI ルート パケット コア ダッシュボードのリダイレクト URI の次の部分を書き留めます: https://<ローカル監視ドメイン>/grafana root_url

ローカル アクセスを変更する

Azure portal に移動し、サイトの [パケット コア コントロール プレーン] リソースに移動します。 ブレードの [ローカル アクセスを変更する] タブを選択します。

  1. [認証の種類][Microsoft Entra ID] に設定されている場合は、「Kubernetes シークレット オブジェクトを作成する」から続けます。
  2. それ以外の場合:
    1. [認証の種類] ドロップダウンから [Microsoft Entra ID] を選択します。
    2. レビューを選択します。
    3. 送信を選択します。

Kubernetes シークレット オブジェクトを作成する

Azure Private 5G Core アプリケーションで Microsoft Entra ID をサポートするには、Kubernetes シークレットを含む YAML ファイルが必要です。

  1. Kubernetes シークレット オブジェクトの情報を収集する」で収集した各値を Base64 形式に変換します。 たとえば、Azure Cloud Shell Bash ウィンドウで次のコマンドを実行できます。

    echo -n <Value> | base64
    
  2. secret-azure-ad-local-monitoring.yaml ファイルを作成し、そこに分散トレースとパケット コア ダッシュボードを構成するための、Base64 でエンコードされた値を含めます。 分散トレースのシークレットには sas-auth-secrets という名前を付ける必要があり、パケット コア ダッシュボードのシークレットには grafana-auth-secrets という名前を付ける必要があります。

    apiVersion: v1
    kind: Secret
    metadata:
        name: sas-auth-secrets
        namespace: core
    type: Opaque
    data:
        client_id: <Base64-encoded client ID>
        client_secret: <Base64-encoded client secret>
        redirect_uri_root: <Base64-encoded distributed tracing redirect URI root>
        tenant_id: <Base64-encoded tenant ID>
    
    ---
    
    apiVersion: v1
    kind: Secret
    metadata:
        name: grafana-auth-secrets
        namespace: core
    type: Opaque
    data:
        GF_AUTH_AZUREAD_CLIENT_ID: <Base64-encoded client ID>
        GF_AUTH_AZUREAD_CLIENT_SECRET: <Base64-encoded client secret>
        GF_AUTH_AZUREAD_AUTH_URL: <Base64-encoded authorization URL>
        GF_AUTH_AZUREAD_TOKEN_URL: <Base64-encoded token URL>
        GF_SERVER_ROOT_URL: <Base64-encoded packet core dashboards redirect URI root>
    

Kubernetes シークレット オブジェクトを適用する

パケット コアの停止後または Kubernetes シークレット オブジェクト YAML ファイルの更新後に、サイトの Microsoft Entra ID を有効にする場合は、Kubernetes シークレット オブジェクトを適用する必要があります。

  1. [Azure Cloud Shell] にサインインし、[PowerShell] を選択します。 初めて Azure Cloud Shell 経由でクラスターにアクセスする場合は、「クラスターにアクセスする」に従って kubectl アクセスを構成します。

  2. コア kubeconfig ファイル名を指定して、分散トレースとパケット コア ダッシュボードの両方にシークレット オブジェクトを適用します。

    kubectl apply -f $HOME/secret-azure-ad-local-monitoring.yaml --kubeconfig=<core kubeconfig>

  3. 次のコマンドを使用して、コア kubeconfig ファイル名を指定して、シークレット オブジェクトが正しく適用されたかどうかを確認します。 NameNamespaceType の値が正しく表示されるはずです。エンコードされた値のサイズも表示されます。

    kubectl describe secrets -n core sas-auth-secrets --kubeconfig=<core kubeconfig>

    kubectl describe secrets -n core grafana-auth-secrets --kubeconfig=<core kubeconfig>

  4. 分散トレースとパケット コア ダッシュボード ポッドを再起動します。

    1. パケット コア ダッシュボード ポッドの名前を取得します。

      kubectl get pods -n core --kubeconfig=<core kubeconfig>" | grep "grafana"

    2. 前の手順の出力をコピーし、次のコマンドに置き換えてポッドを再起動します。

      kubectl delete pod sas-core-search-0 <packet core dashboards pod> -n core --kubeconfig=<core kubeconfig>

アクセスの確認

分散トレース Web GUI にアクセスする」と「パケット コア ダッシュボードにアクセスする」に従って、Microsoft Entra ID を使用してローカル監視ツールにアクセスできるかどうかを確認します。

Kubernetes シークレット オブジェクトを更新する

既存の Kubernetes シークレット オブジェクトを更新する必要がある場合は、この手順に従います。たとえば、リダイレクト URI を更新した後や、期限切れのクライアント シークレットを更新した後などです。

  1. Kubernetes シークレット オブジェクトを作成する」で作成した Kubernetes シークレット オブジェクト YAML ファイルに必要な変更を行います。
  2. Kubernetes シークレット オブジェクトを適用します
  3. アクセスを確認します

次のステップ

これをまだ行っていない場合は、ここでプライベート モバイル ネットワークのポリシー コントロール構成を設計する必要があります。 これにより、パケット コア インスタンスがトラフィックにサービスの品質 (QoS) 特性を適用する方法をカスタマイズできます。 また、特定のフローをブロックまたは制限することもできます。