> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# シークレットの管理 (プレビュー)

> このドキュメントでは、シークレットをゲーム サーバーに安全にデプロイできるようにするシークレット管理機能に関する情報を提供します。

この新機能により、ゲーム開発者はインストルメンテーション キーやシークレット キーなどのシークレットをゲーム サーバー上で安全にアップロード、リスト表示、更新、および使用できるようになります。

## シークレット管理機能の使用方法

シークレットを効果的に管理および活用するために、推奨されるワークフローには以下が含まれます:

1. シークレットの追加 (この手順は複数のシークレットに対して繰り返すことができます)
2. 新しいビルドの作成時に名前でシークレットを参照する
3. ゲーム サーバーからシークレットにアクセスする
4. 必要に応じてシークレットを更新する

### シークレットの追加

シークレットは [UploadSecret](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/upload-secret) API 経由で追加できます。
この API を使用すると、新しいシークレットをサービスにアップロードしたり、**ForceUpdate** パラメーターを **true** に設定して既存のシークレットを更新したりできます。

### シークレットのデプロイ

新しく作成された VM にシークレットをデプロイするには、CreateBuild API の GameSecretReferences パラメーターを使用してシークレットをビルドに組み込みます (コンテナーおよびプロセスベースの両方のデプロイに適用可能)。

> [!NOTE]
>
> ビルドが作成されると、新しいシークレットを追加することはできません。ただし、既存のシークレットを更新することで、更新された値を新しい VM で使用できます (既存の VM は元の値を保持します)。

シークレットを参照する例を以下に示します:

```csharp theme={null}
var request = new CreateBuildWithCustomContainerRequest()
{
    ContainerImageReference = new ContainerImageReference()
    {
        ImageName = "testimagename",
        Tag = "0.1"
    },
    ContainerFlavor = ContainerFlavor.CustomLinux,
    BuildName = "testbuildwithvmstartupscript",
    VmSize = AzureVmSize.Standard_D2as_v4,
    MultiplayerServerCountPerVm = 3,
    Ports = new List<Port>
    {
        new Port()
        {
            Name = "port",
            Num = 123,
            Protocol = ProtocolType.TCP
        }
    },
    RegionConfigurations = new List<BuildRegionParams>
    {
        new BuildRegionParams()
        {
            Region = "EastUs",
            StandbyServers = 3,
            MaxServers = 6
        }
    },
    GameSecretReferences = new[]
    {
        new GameSecretReferenceParams
        {
            Name = "SecretName"
        }
    }
};
var result = await PlayFabMultiplayerAPI.CreateBuildWithCustomContainerAsync(request);
```

### シークレットへのアクセス

シークレットが追加され、新しいビルドで参照されると、コンテナーベースまたはプロセスベースを問わず、各ゲーム サーバー内の環境変数を通じてゲーム サーバーはこれらのシークレット値にアクセスできます。

環境変数の命名規則は以下のとおりです:

```shell theme={null}
PF_MPS_SECRET_<Secret Name>
```

### シークレットの削除

古いシークレットを削除するには、[DeleteSecret](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/delete-secret) API を利用してください。

シークレットが任意のビルドで使用されていないことを確認してから削除を試みてください。そうでない場合、削除は成功しません。

## VM 起動スクリプトでのシークレットの使用

VM 起動スクリプトは、上記のように環境変数を参照することでシークレット値を利用できます。これにより、たとえばゲーム サーバーを起動する前にテレメトリー キーやその他の必要な値を使用できます。

## 関連項目

* [PowerShell/API を使用したビルドのデプロイ](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/servers/deploy-using-powershell-api.md)
* [VM 作成中のカスタム スクリプトの実行 - VmStartupScript (プレビュー)](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/servers/vmstartupscript.md)


## Related topics

- [プレイヤー シークレットの設定](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/authentication/set-player-secret.md)
- [プレイヤー共有シークレットの取得](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/authentication/get-player-shared-secrets.md)
- [プレイヤー共有シークレットの削除](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/authentication/delete-player-shared-secret.md)
- [プレイヤー共有シークレットの更新](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/authentication/update-player-shared-secret.md)
- [プレイヤー共有シークレットの作成](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/authentication/create-player-shared-secret.md)
