本页面适用于 Apigee 和 Apigee Hybrid。
本文档介绍了如何通过命令行预配 API Hub。如果您希望使用向导式界面预配 API Hub,请参阅在 Cloud 控制台中预配 API Hub。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project:
roles/serviceusage.serviceUsageAdmin
roles/cloudkms.admin
roles/apihub.provisioningAdmin
roles/resourcemanager.projectIamAdmin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
进入 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
- 在选择角色列表中,选择一个角色。
- 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
- 点击 Save(保存)。
步骤摘要
预配步骤如下:
- 第 1 步:启用 API。您必须启用一组 Google Cloud API,才能运行 Apigee API Hub。
- 第 2 步:创建 Apigee API Hub 服务身份。借助服务身份,API Hub 实例可以调用执行其操作所需的 Google Cloud API。
- 第 3 步:配置加密。您可以选择是使用 Google-owned and Google-managed encryption key (GMEK) 还是客户管理的加密密钥 (CMEK) 方法对静态 API 数据进行加密和解密。请参阅 CMEK 与 Google 自有 and Google-owned and Google-managed encryption keys的比较。
- 第 4 步:创建 API Hub 实例。最后,您必须注册宿主项目并创建 API Hub 实例。
预配步骤
确保您已满足准备工作中所述的前提条件。
第 1 步:启用 API
如需预配 API Hub,您必须在 Google Cloud 项目中启用以下 API:
-
通过执行以下
services enable
命令启用所需的 Google Cloud API:gcloud services enable apihub.googleapis.com \ cloudkms.googleapis.com --project=YOUR_PROJECT_ID
其中,
YOUR_PROJECT_ID
是您在准备工作中创建的 Cloud 项目 ID。
第 2 步:创建 Apigee API Hub 服务身份
借助服务身份,API Hub 实例可以调用执行其操作所需的 Google Cloud API。
-
创建服务身份:
gcloud beta services identity create --service=apihub.googleapis.com \ --project=YOUR_PROJECT_ID
其中
YOUR_PROJECT_ID
是您在准备工作中创建的 Cloud 项目 ID。 验证代理已成功创建。响应包含代理的名称,格式为:
service-PROJECT_NUMBER@gcp-sa-apihub.iam.gserviceaccount.com
。例如:Service identity created: service-1234567890@gcp-sa-apihub.iam.gserviceaccount.com
请注意,您需要在后续步骤中使用此服务身份。
第 3 步:配置加密
在此步骤中,您将配置 API Hub 实例中数据加密的管理方式。您可以使用 Google-owned and Google-managed encryption key (GMEK),也可以创建自己的客户管理的加密密钥 (CMEK)。请参阅 CMEK 与 Google 自有 and Google-owned and Google-managed encryption keys的比较。
CMEK 步骤
如果您想使用 CMEK 对数据进行加密,请按以下步骤操作:
-
创建运行时数据库加密密钥环和密钥。您可以根据需要使用现有的 CMEK 密钥和密钥环。请注意,密钥必须在您计划创建 API 中心实例的位置创建。
创建新的密钥环:
密钥环的名称在您的组织中必须是唯一的。如果您创建第二个或后续区域,则名称不能与任何其他密钥环名称相同。
gcloud kms keyrings create KEY_RING_NAME \ --location KEY_RING_LOCATION --project YOUR_PROJECT_ID
其中:
KEY_RING_NAME
:要创建的密钥环的名称。KEY_RING_LOCATION
:密钥环的物理位置。此位置必须与您计划在后续步骤中为 API Hub 实例使用的区域相同。您必须使用以下某个受支持的位置:区域说明 区域名称 艾奥瓦 us-central1
北弗吉尼亚 us-east4
俄勒冈 us-west1
比利时 europe-west1
伦敦 europe-west2
新加坡 asia-southeast1
孟买 asia-south1
圣保罗 southamerica-east1
悉尼 australia-southeast1
YOUR_PROJECT_ID
:您在准备工作中创建的 Cloud 项目 ID。
创建加密密钥并将其添加到密钥环中:
gcloud kms keys create KEY_NAME \ --keyring KEY_RING_NAME \ --location KEY_LOCATION \ --purpose "encryption" \ --project YOUR_PROJECT_ID
其中:
KEY_NAME
:您要创建的数据库密钥的名称。KEY_RING_NAME
:您刚刚创建的密钥环的名称。KEY_LOCATION
:密钥的物理位置。使用您创建密钥环时所用的同一位置。
- 获取密钥 ID:
gcloud kms keys list \ --location=KEY_LOCATION \ --keyring=KEY_RING_NAME \ --project=YOUR_PROJECT_ID
密钥 ID 的语法如下所示(类似于文件路径)。保留此密钥 ID,因为您需要在后续步骤中使用它:
projects/YOUR_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
向 Apigee Service Agent 授予访问权限以使用新的密钥:
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member serviceAccount:SERVICE_ACCOUNT \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project YOUR_PROJECT_ID
其中:SERVICE_ACCOUNT 是您在第 2 步中创建的服务账号的 ID。该 ID 类似于
service-1234567890@gcp-sa-apihub.iam.gserviceaccount.com
。此命令将密钥绑定到 Apigee API Hub Service Agent。
成功完成此请求后,
gcloud
的响应将如下所示:Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apihub.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
如果出现如下错误:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
请务必使用项目编号,而不是服务账号电子邮件地址中的项目名称。
GMEK 步骤
如果您想使用 GMEK 进行数据加密,请立即前往下一步:第 4 步:创建 API Hub 实例。 无需进行其他密钥配置。
第 4 步:创建 API Hub 实例
宿主项目是您将在其中预配 Apigee API Hub 的 Google Cloud 项目。您只能为每个宿主项目预配一个 API Hub 实例。
- 注册宿主项目:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -d '{ "gcpProject": "projects/YOUR_PROJECT_ID" }' https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/hostProjectRegistrations?host_project_registration_id=HOST_ID
其中:
YOUR_PROJECT_ID
:您在准备工作中创建的 Cloud 项目 ID。PROJECT_LOCATION
:您要托管 Apigee API Hub 实例的物理位置(区域)。您必须使用创建 CMEK 密钥和密钥环时所用的同一位置。支持的区域包括:区域说明 区域名称 艾奥瓦 us-central1
北弗吉尼亚 us-east4
俄勒冈 us-west1
比利时 europe-west1
伦敦 europe-west2
新加坡 asia-southeast1
孟买 asia-south1
圣保罗 southamerica-east1
悉尼 australia-southeast1
HOST_ID
:宿主项目的名称。
- 创建 API Hub 实例:
使用 CMEK
如果您使用 CMEK 对数据进行加密,请执行以下命令:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -H "X-Google-GFE-Can-Retry: yes" -d '{ "config":{ "cmekKeyName":"KEY_NAME", "vertexLocation":"VERTEX_LOCATION", "encryptionType":"CMEK" } }' https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/apiHubInstances?api_hub_instance_id=INSTANCE_ID
其中:
KEY_NAME
(必需):CMEK 密钥的完全限定名称。此名称是在创建密钥时返回的。例如:projects/YOUR_PROJECT_ID/locations/HOST_LOCATION/hostProjectRegistrations/HOST_ID
。VERTEX_LOCATION
(可选):指定用于存储基于 Vertex AI 的搜索数据(与 API Hub 的语义搜索功能相关联的数据)的多区域位置。 您可以为此值使用us
或eu
。如果您不想使用这两个多区域,可以通过省略此参数来停用语义搜索。encryptionType
(必需)您必须使用CMEK
。YOUR_PROJECT_ID
是您在准备工作中创建的 Cloud 项目 ID。PROJECT_LOCATION
:您必须使用注册宿主项目时所用的同一位置。INSTANCE_ID
:API Hub 实例的名称。 此值应为 4-40 个字符,有效字符为/[a-z][A-Z][0-9]-_/
。
使用 GMEK
如果您使用 GMEK 进行数据加密,请执行以下命令:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -H "X-Google-GFE-Can-Retry: yes" -d '{ "config":{ "vertexLocation":"VERTEX_LOCATION", "encryptionType":"GMEK" } }' https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/apiHubInstances?api_hub_instance_id=INSTANCE_ID
其中:
VERTEX_LOCATION
(可选):指定用于存储基于 Vertex AI 的搜索数据(与 API Hub 的语义搜索功能相关联的数据)的多区域位置。 您可以为此值使用us
或eu
。如果您不想使用这两个多区域,可以通过省略此参数来停用语义搜索。encryptionType
必须为GMEK
。如果您未提供加密类型,则默认使用 GMEK。YOUR_PROJECT_ID
是您在准备工作中创建的 Cloud 项目 ID。PROJECT_LOCATION
:您必须使用注册宿主项目时所用的同一位置。INSTANCE_ID
:API Hub 实例的名称。 此值应为 4-40 个字符,有效字符为/[a-z][A-Z][0-9]-_/
。
YOUR_PROJECT_ID
是您在准备工作中创建的 Cloud 项目 ID。PROJECT_LOCATION
:您必须使用注册宿主项目时所用的同一位置。- 查看使用 API Hub 所需的角色和权限
- 配置 API Hub 属性:
- 注册 API 资源:
- 添加 API 版本:
第 5 步(可选):创建运行时项目附件
如果您在具有 Apigee 代理的项目中预配了 API Hub,请执行此可选步骤,以便在 API Hub 中自动注册代理。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -H "X-Google-GFE-Can-Retry: yes" \ https://apihub.googleapis.com/v1/projects/YOUR_PROJECT_ID/locations/PROJECT_LOCATION/runtimeProjectAttachments?runtimeProjectAttachmentId=YOUR_PROJECT_ID
其中:
后续步骤
现在您可以开始使用 API Hub: