我可以使用Terraform创建GCP API密钥吗?

时间:2020-03-24 09:38:37

标签: google-cloud-platform terraform terraform-provider-gcp

我想使用Terraform创建Google Cloud API keys

这可能吗?

2 个答案:

答案 0 :(得分:2)

许多人使用API​​密钥来保护对API的访问。但是,Google认为这种身份验证是不安全的(与具有1H寿命的OAuth令牌相比,API密钥永远不会旋转。如果您的身份验证密钥被盗,那么使用API​​密钥的效果将不受时间限制。

这就是为什么要阻止这种不良用法,您不能轻松地生成(并验证)API密钥,我的意思是,没有公共API可以调用来创建或检查API密钥。因此,terraform无法执行此任务。

答案 1 :(得分:2)

还没有,但是Google似乎正在努力公开用于API密钥管理的API。最新的Cloud SDK(经过287.0.0测试)具有Alpha支持,如下所示:

$ gcloud alpha services api-keys
ERROR: (gcloud.alpha.services.api-keys) Command name argument expected.

Available commands for gcloud alpha services api-keys:

      clone                   *(ALPHA)*  Create a new API key with the same
                              metadata as input key.
      create                  *(ALPHA)*  Create an API key.
      delete                  *(ALPHA)*  Delete an API key.
      describe                *(ALPHA)*  Describe an API key's metadata.
      get-key-string          *(ALPHA)*  Get key string of an API key.
      list                    *(ALPHA)*  Lists API keys.
      lookup                  *(ALPHA)*  Look up resource name of a key string.
      undelete                *(ALPHA)*  Undelete an API key.
      update                  *(ALPHA)*  Update an API key's metadata.

--log-http列出项目API密钥时,您会看到使用的API端点:

$ gcloud alpha services api-keys list --project $PROJECT --log-http
...
==== request start ====
uri: https://apikeys.googleapis.com/v2alpha1/projects/$PROJECT/keys?alt=json
...

即使cloud sdk正在使用v2alpha1,也有v2beta1可用。像这样验证:

$ curl -s -H"Authorization: Bearer $(gcloud auth print-access-token)" \
   https://apikeys.googleapis.com/v2beta1/projects/$PROJECT/keys
{
  "keys": [
    {
      "name": "projects/REDACTED/keys/REDACTED",
      "displayName": "REDACTED",
      "createTime": "2019-04-15T10:39:53.558Z",
      "updateTime": "2019-04-15T10:40:06.616639Z",
      "restrictions": {
        "androidKeyRestrictions": {},
        "apiTargets": [
          {
            "service": "geocoding_backend"
          }
        ]
      },
      "state": "ACTIVE"
    }
  ]
}

由于terraform谷歌提供程序通常很快就能添加新功能,因此我只能假设支持即将到来。您可能需要创建一个Github Issue来表达您的兴趣。或观看beta provider的更改日志。