【问题标题】:How to handle key rotations in azure key vault如何处理 azure 密钥库中的密钥轮换
【发布时间】:2018-01-24 23:02:22
【问题描述】:

我必须在我的应用程序中实现密钥轮换。我知道如何做到这一点,但我不确定该解决方案是否一切正常。

好的,开始吧。我的应用程序中有几个地方使用 KeyVaultClient(Azure KeyVault 客户端)进行解密。它工作得很好。在我的应用程序中有一些使用 KeyVaultClient 进行加密的地方。现在(仍处于开发阶段)我正在使用硬编码参数(vaultBaseUrl,keyName,keyVersion)。但我想更进一步,将这个参数移动到 app.config 文件中。

这里的问题开始了如何处理 keyVersion 变量(我认为我可以轻松地将其余变量存储在 app.config 文件中,不是吗?)我有几个想法:

用于加密:

  1. 我可以将当​​前的 keyVersion 存储在 app.config 中,并在每次加密数据时使用此值。
  2. 我可以从 KeyVaultClients 中读取所有密钥(GetKeysAsync),然后按活动标志过滤它们并按到期日期排序。最后使用最新的。

用于解密:

  1. 我可以将用于加密的 keyVersion 存储在加密数据中(我正在转换为 Base64String 的加密结果)。我的意思是我可以在字符串结果中添加 32 个字符(keyVersion)前缀。
  2. 没有更多想法,也许使用 app.config 中的 keyVersion,但它会产生密钥轮换问题。

也许有一些工具/库可以为我处理这一切? :p

目前,新密钥由管理员手动插入。在接下来的阶段中,我将为此实施计划任务。

【问题讨论】:

    标签: c# .net azure azure-keyvault key-management


    【解决方案1】:

    也许有一些工具/库可以为我处理这一切?

    正如您提到的,您需要加密密钥版本与解密密钥版本一致。如果您可以分享您的场景,那就更好了。以Encrypt blob 为例。如果 blob 被加密,它将有一个 Metadata["encryptiondata"],其中包含 keyId。在您的情况下,也许您还可以为对象添加带有 keyId 的属性。当您尝试解密时,您可以从对象中获取 keyId。

    目前,新密钥由管理员手动插入。在接下来的阶段中,我将为此实施计划任务。

    如果您想创建密钥,您可以在 WebJob 或 Azure 函数中按照此代码示例进行操作。

    static string _clientId= "xxxxxxxxxxxxx";
    static string _clientSecret = "xxxxxxxxxxxxxxxx";
    static string _tenantId = "xxxxxxxxxxxxxxxx";
    public static async Task<string> GetAccessToken(string azureTenantId, string azureAppId, string azureSecretKey)
    {
       var context = new AuthenticationContext("https://login.windows.net/" + _tenantId);
       ClientCredential clientCredential = new ClientCredential(_clientId, _clientSecret);
       var tokenResponse = await context.AcquireTokenAsync("https://vault.azure.net", clientCredential);
       var accessToken = tokenResponse.AccessToken;
       return accessToken;
    }
    var kv = new KeyVaultClient(GetAccessToken);
    var result = kv.CreateKeyAsync(vault,keyName,keyType).Result;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2018-04-12
      • 1970-01-01
      • 2022-12-16
      相关资源
      最近更新 更多