> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.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 將保留原始值)。
</Note>

以下是如何參考秘密的範例：

```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 [DeleteSecret](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/delete-secret) API。

嘗試刪除秘密之前，請確定沒有任何組建使用該秘密，否則刪除將不會成功。

## 在 VM 啟動指令碼中使用秘密

VM 啟動指令碼可以透過參考所述的環境變數來使用秘密值。例如，這可讓您在啟動任何遊戲伺服器之前使用遙測金鑰或其他必要的值。

## 另請參閱

* [使用 PowerShell/API 部署組建](/zh-TW/services/playfab/multiplayer/servers/deploy-using-powershell-api)
* [在 VM 建立期間執行自訂指令碼 - VmStartupScript (預覽)](/zh-TW/services/playfab/multiplayer/servers/vmstartupscript)


## Related topics

- [秘密金鑰管理](/zh-TW/services/playfab/live-service-management/gamemanager/secret-key-management.md)
- [Game Manager](/zh-TW/services/playfab/live-service-management/gamemanager/index.md)
- [Event Partitioning 快速入門 (預覽)](/zh-TW/services/playfab/data-analytics/export-data/event-partitioning-quickstart.md)
- [加密登入](/zh-TW/services/playfab/identity/player-identity/encryption/encrypted-logins.md)
- [PlayFab 即時服務管理文件](/zh-TW/services/playfab/live-service-management/index.md)
