配置新实例和现有实例以使用 IAM 数据库身份验证

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页面介绍了如何创建或修改 Cloud SQL 实例以允许配置为使用 Cloud SQL IAM 数据库身份验证的用户或服务帐号。如需详细了解 Cloud SQL IAM 集成,请参阅 Cloud SQL IAM 数据库身份验证概览

新创建的实例具有一个 postgres 数据库。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  4. 安装初始化 Google Cloud CLI。
  5. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  6. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

  7. 安装初始化 Google Cloud CLI。
  8. 确保您的用户帐号具有 Cloud SQL Admin 和 Compute Viewer 角色。

    转到 IAM 页面

    详细了解角色和权限。

配置新实例以使用 IAM 数据库身份验证

Cloud SQL 使用标志启用和停用实例上的 IAM 用户连接。在此过程中,您需要启用该标志。

如需配置使用 Cloud SQL IAM 数据库身份验证的新实例,请按如下所述操作:

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 点击创建实例
  3. 点击选择 PostgreSQL
  4. 输入实例 ID 的名称。请勿在实例名称中包含敏感信息或个人身份信息,因为此名称对外可见。无需在实例名称中包含项目 ID。系统会在适当的位置(例如在日志文件中)自动包含项目 ID。
  5. 为默认的管理员用户输入密码。
  6. 数据库版本下拉菜单中,选择数据库版本。
  7. 选择区域和可用区可用性部分,为实例选择区域和可用区。将实例与访问实例的资源置于相同地区内。以后无法更改选择的地区。通常,您无需指定区域。
  8. 自定义实例部分,点击显示配置选项,然后展开标志
  9. 点击添加标志
  10. 选择标志下拉菜单中,选择 cloudsql.iam_authentication 标志。确保选择开启作为此标志的值,然后点击完成
  11. 根据需要配置其他实例设置。如需详细了解设置,请参阅设置
  12. 点击创建实例

gcloud

运行 gcloud sql instances create,注意将 -database-flags 参数设置为 cloudsql.iam_authentication=on

替换以下内容:

  • INSTANCE_NAME:新实例的名称。
  • POSTGRES_VERSION:PostgreSQL 版本(例如 POSTGRES_9_6、POSTGRES_10、POSTGRES_11 或 POSTGRES_12)。
  • NUMBER_OF_CORES:机器中的核心数。
  • AMOUNT_OF_MEMORY:机器中的内存量。应该提供大小单位(例如 3072MiB 或 9GiB)。
  • ZONE:首选 Compute Engine 区域(例如 us-central1-a 或 us-central1-b)。
  • PASSWORD:为根用户创建密码。
gcloud sql instances create INSTANCE_NAME \
--database-version=POSTGRES_VERSION \
--cpu=NUMBER_OF_CORES \
--memory=AMOUNT_OF_MEMORY \
--zone=ZONE_NAME \
--root-password=PASSWORD \
--database-flags=cloudsql.iam_authentication=on

REST v1beta4

请勿在实例名称中包含敏感信息或个人身份信息,因为此名称对外可见。

无需在实例名称中包含项目 ID。系统会在适当的位置(例如在日志文件中)自动包含项目 ID。

在使用任何请求数据之前,请先进行以下替换:

  • instance-id:所需的实例 ID
  • region:所需地区,例如 us-east-1
  • project-id:您的项目 ID
  • location-id:位置 ID
  • database-version:数据库版本的枚举字符串。 例如 POSTGRES_12
  • password:根用户的密码
  • machine-type:机器(层级)类型的枚举字符串,例如:db-custom-[CPUS]-[MEMORY_MBS]

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/locations/location-id/instances

请求 JSON 正文:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "rootPassword": "password",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "enabled": true
    },
    "databaseFlags": [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
如需了解如何为此任务构建底层 REST API 请求,请参阅 instances:insert 页面上的 APIs Explorer

配置现有实例以使用 Cloud SQL IAM 数据库身份验证

如需在现有实例上配置 IAM 数据库身份验证,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击修改
  4. 自定义实例部分,展开标志
  5. 点击添加标志
  6. 选择标志下拉菜单中,选择 cloudsql.iam_authentication 标志。确保选择开启作为此标志的值,然后点击完成
  7. 根据需要配置其他实例设置。如需详细了解设置,请参阅设置
  8. 点击保存

gcloud

如需了解如何安装和开始使用 gcloud 命令行工具,请参阅 [安装 gcloud CLI](/sdk/docs/install)。如需了解如何启动 Cloud Shell,请参阅 [Cloud Shell 文档](/shell/docs/starting-cloud-shell)。

对于此过程,请使用 gcloud sql instances patch

请替换以下内容:

  • INSTANCE_NAME:新实例的名称。
gcloud sql instances patch INSTANCE_NAME \
--database-flags=cloudsql.iam_authentication=on

这将重置所有其他现有数据库标志设置。如需进一步了解如何设置数据库标志,请参阅设置数据库标志

REST v1beta4

在使用任何请求数据之前,请先进行以下替换:

  • project-id:您的项目 ID
  • location-id:位置 ID
  • instance-id:所需的实例 ID
  • region:所需地区
  • database-version:数据库版本的枚举字符串。 例如 POSTGRES_12
  • password:根用户的密码
  • machine-type:机器(层级)类型的枚举字符串,例如:db-custom-[CPUS]-[MEMORY_MBS]

HTTP 方法和网址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/locations/location-id/instances

请求 JSON 正文:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "rootPassword": "password",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "enabled": true
    }
    "databaseFlags":
    [
      {
        "name": "cloudsql.iam_authentication",
        "value": "on"
      }
    ]
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

后续步骤