本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
Apigee 與 VPC Service Controls 整合,可讓您隔離 Google Cloud 專案的資源。這有助於防止資料外洩/遭竊。
本節說明如何搭配 Apigee 使用 VPC Service Controls。
總覽
VPC Service Controls 會定義服務範圍,做為專案和其他服務之間的界線。服務範圍是機構層級的方法,可保護專案中的 Google Cloud 服務,以降低資料竊取風險。
VPC Service Controls 也可確保範圍內具備資源私人存取權的用戶端,無法存取範圍外未獲授權的資源。
如要詳細瞭解服務範圍的優點,請參閱 VPC Service Controls 總覽。
使用 VPC Service Controls 時,請注意下列事項:
- Google Cloud 專案和相關聯的執行階段都會納入該專案的 VPC Service Controls 範圍。
- 您可以使用虛擬私有雲網路可存取的服務功能,限制服務範圍內服務之間的互動。
Apigee 和 Apigee Hybrid 都與 VPC Service Controls 整合。如需可與 VPC Service Controls 整合的產品完整清單,請參閱「支援的產品」。
對網路連線的影響
啟用 VPC Service Controls 後,系統會停用網際網路存取權,Apigee 執行階段將無法再與任何公開網際網路目標通訊。您必須建立自訂路徑,將流量轉送至虛擬私有雲。請參閱「匯入及匯出自訂路徑」。
使用 Apigee 設定 VPC Service Controls
使用 Apigee 設定 VPC Service Controls 的一般程序如下:
- 啟用 VPC Service Controls。
- 建立新的服務範圍。
- 設定服務範圍。
以下將詳細說明這些步驟。
如要透過 Apigee 設定 VPC Service Controls,請按照下列步驟操作:
-
執行下列指令,為從網路到 Apigee 的對等互連連線啟用 VPC Service Controls:
gcloud services vpc-peerings enable-vpc-service-controls \ --network=SHARED_VPC_NETWORK --project=PROJECT_ID
其中:
- SHARED_VPC_NETWORK 是共用虛擬私有雲網路的名稱。
- PROJECT_ID 是共用 VPC 網路的主機專案名稱,不是用於建立 Apigee 機構的專案。
這個指令會為專案啟用 VPC Service Controls。您可以多次執行這項指令,為多個專案啟用 VPC Service Controls。
-
按照 VPC Service Controls 快速入門導覽課程中的說明,建立新的範圍。建立範圍時,您可以選擇要在範圍內新增哪些專案,以及要保護哪些服務。
對於 Apigee 和 Apigee Hybrid,Google 建議您在建立安全防護範圍時,保護所有服務,包括 Apigee API。
詳情請參閱「建立服務範圍」。
- 按照「服務範圍詳細資料與設定」一文中的說明,設定服務範圍。
如要在周邊新增整合式入口網站,請參閱「在周邊新增整合式入口網站」。
使用 Apigee Hybrid 設定 VPC Service Controls
Apigee hybrid 支援 VPC Service Controls,但您必須執行額外步驟。將 Apigee Hybrid 與 VPC Service Controls 整合的一般程序如下:
- 設定私人連線。
- 保護範圍內的其他服務。
- 設定私人存放區。(私人存放區是指位於周邊範圍內的存放區,只要位於周邊範圍內,不一定要是本機存放區)。
- 將 Apigee 映像檔推送至私人存放區。
- 在混合式安裝和設定程序中,更新覆寫項目以使用私人存放區。
以下程序會詳細說明每個步驟。
如要使用 Apigee Hybrid 設定 VPC Service Controls,請按照下列步驟操作:
- 如要為混合式網路主機設定私人 IP 位址,請參閱「設定連至 Google API 與服務的私人連線」。這包括設定路徑、防火牆規則和 DNS 項目,讓 Google API 存取這些私人 IP。
-
按照「使用 Apigee 設定 VPC Service Controls」中的步驟操作。
在這個過程中,除了為 Apigee 指定的服務外,您也必須確保範圍內的下列服務受到保護:
- Anthos 服務網格
- Cloud Monitoring (Stackdriver)
- Google Kubernetes Engine (如果您在 GKE 上執行)
- Google Container Registry (如果您將這個服務做為本機存放區)
如要將這些服務新增至範圍,請按照「服務範圍詳細資料與設定」中的操作說明進行。
- 將 Apigee 映像檔複製到私人存放區:
-
如這裡所述,從 Docker Hub 下載已簽署的 Apigee 映像檔。請務必指定最新版本號碼。
例如:
docker pull google/apigee-installer:1.3.3 docker pull google/apigee-authn-authz:1.3.3 docker pull google/apigee-mart-server:1.3.3 docker pull google/apigee-synchronizer:1.3.3 docker pull google/apigee-runtime:1.3.3 docker pull google/apigee-hybrid-cassandra-client:1.3.3 docker pull google/apigee-hybrid-cassandra:1.3.3 docker pull google/apigee-cassandra-backup-utility:1.3.3 docker pull google/apigee-udca:1.3.3 docker pull google/apigee-stackdriver-logging-agent:1.6.8 docker pull google/apigee-prom-prometheus:v2.9.2 docker pull google/apigee-stackdriver-prometheus-sidecar:0.7.5 docker pull google/apigee-connect-agent:1.3.3 docker pull google/apigee-watcher:1.3.3 docker pull google/apigee-operators:1.3.3 docker pull google/apigee-kube-rbac-proxy:v0.4.1
-
為圖片加上標記。
以下範例會標記美國 GCR 存放區中的映像檔:
docker tag google/apigee-installer:1.3.3 us.gcr.io/project_ID/apigee-installer:1.3.3 docker tag google/apigee-authn-authz:1.3.3 us.gcr.io/project_ID/apigee-authn-authz:1.3.3 docker tag google/apigee-mart-server:1.3.3 us.gcr.io/project_ID/apigee-mart-server:1.3.3 docker tag google/apigee-synchronizer:1.3.3 us.gcr.io/project_ID/apigee-synchronizer:1.3.3 docker tag google/apigee-runtime:1.3.3 us.gcr.io/project_ID/apigee-runtime:1.3.3 docker tag google/apigee-hybrid-cassandra-client:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3 docker tag google/apigee-hybrid-cassandra:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3 docker tag google/apigee-cassandra-backup-utility:1.3.3 us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3 docker tag google/apigee-udca:1.3.3 us.gcr.io/project_ID/apigee-udca:1.3.3 docker tag google/apigee-stackdriver-logging-agent:1.6.8 us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8 docker tag google/apigee-prom-prometheus:v2.9.2 us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2 docker tag google/apigee-stackdriver-prometheus-sidecar:0.7.5 us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5 docker tag google/apigee-connect-agent:1.3.3 us.gcr.io/project_ID/apigee-connect-agent:1.3.3 docker tag google/apigee-watcher:1.3.3 us.gcr.io/project_ID/apigee-watcher:1.3.3 docker tag google/apigee-operators:1.3.3 us.gcr.io/project_ID/apigee-operators:1.3.3 docker tag google/apigee-kube-rbac-proxy:v0.4.1 us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1
雖然不是必要條件,但 Google 建議您在每個映像檔的存放區路徑中,加入專案 ID 或其他識別值。
-
將映像檔推送至私人存放區。
以下範例會將映像檔推送至美國的 GCR 存放區:
docker push us.gcr.io/project_ID/apigee-installer:1.3.3 docker push us.gcr.io/project_ID/apigee-authn-authz:1.3.3 docker push us.gcr.io/project_ID/apigee-mart-server:1.3.3 docker push us.gcr.io/project_ID/apigee-synchronizer:1.3.3 docker push us.gcr.io/project_ID/apigee-runtime:1.3.3 docker push us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3 docker push us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3 docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3 docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3 docker push us.gcr.io/project_ID/apigee-udca:1.3.3 docker push us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8 docker push us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2 docker push us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5 docker push us.gcr.io/project_ID/apigee-connect-agent1.3.3 docker push us.gcr.io/project_ID/apigee-watcher1.3.3 docker push us.gcr.io/project_ID/apigee-operators1.3.3 docker push us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1
雖然不是必要條件,但 Google 建議您在每個映像檔的存放區路徑中,加入專案 ID 或其他識別值。
-
-
按照「指定設定覆寫」一文中的說明,更新覆寫檔案,將映像檔網址指向您的私人存放區
你必須變更下列元件的圖片網址:
元件名稱 (在覆寫檔案中) 映像檔網址 ao
your_private_repo/apigee-operators
authz
your_private_repo/apigee-authn-authz
cassandra
your_private_repo/apigee-hybrid-cassandra
auth: your_private_repo/apigee-hybrid-cassandra-client
backup: your_private_repo/apigee-cassandra-backup-utility
restore: your_private_repo/apigee-cassandra-backup-utilityconnectAgent
your_private_repo/apigee-connect-agent
installer
your_private_repo/apigee-installer
kubeRBACProxy
your_private_repo/apigee-kube-rbac-proxy
logger
your_private_repo/apigee-stackdriver-logging-agent
mart
your_private_repo/apigee-mart-server
metrics
your_private_repo/apigee-prom-prometheus
sdSidecar: your_private_repo/apigee-stackdriver-prometheus-sidecarruntime
your_private_repo/apigee-runtime
synchronizer
your_private_repo/apigee-synchronizer
udca
your_private_repo/apigee-udca
fluentd: your_private_repo/apigee-stackdriver-logging-agentwatcher
your_private_repo/apigee-watcher
- 如「將設定套用至叢集」一文所述,使用 GCR 中的新映像檔套用變更。
授予整合式入口網站範圍存取權
VPC-SC 支援將 VPC-SC 存取層級授予整合式入口網站,但這個程序需要額外步驟,如本節所述。
如果未授予整合式入口網站存取層級,則整合式入口網站不適用於已啟用 VPC-SC 的 Apigee 機構。
授予入口網站存取層級:
- 不會將整合式入口網站放在周邊。
- 允許從服務範圍外存取整合式入口網站。
- 允許 VPC-SC 保護的 Apigee 資料 (例如應用程式資料) 暴露給 VPC-SC 範圍外的入口網站使用者。
詳情請參閱「允許服務範圍外的受保護資源存取要求」。
必要條件
如要授予整合式入口網站範圍存取權,請先為專案啟用 Access Context Manager API
(如果尚未啟用)。您可以在 Cloud 控制台中執行這項操作,也可以使用 gcloud services enable 指令。
如要檢查 API 是否已啟用,請檢查 gcloud services list 指令的輸出內容,如步驟 2:啟用 Apigee API 所述。
此外,您必須擁有入口網站所用專案的服務帳戶電子郵件地址。如要取得這項資訊,您需要 GCP 專案 ID 和專案編號。下列步驟說明如何取得這些值:
- 使用 gcloud projects list 指令取得 GCP 專案詳細資料,如下列範例所示:
gcloud projects list
這個指令會傳回 GCP 機構中每個專案的專案 ID (位於
PROJECT_ID
欄) 和專案編號 (位於PROJECT_NUMBER
欄)。 -
找出 Apigee 服務帳戶的電子郵件地址。這個帳戶與您在「步驟 3:建立機構」中佈建機構時,Apigee 安裝程式建立的帳戶相同。
如要取得這個電子郵件地址,請使用
iam service-accounts list
指令,語法如下:gcloud iam service-accounts list --project GCP_PROJECT_ID
例如:
gcloud iam service-accounts list --project my-project DISPLAY NAME EMAIL DISABLED Apigee default service account service-
8675309
@gcp-sa-apigee.iam.gserviceaccount.com False Compute Engine default service account8675309
-compute@developer.gserviceaccount.com False您要使用的服務帳戶電子郵件地址應符合下列格式:
service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com
例如:
service-
8675309
@gcp-sa-apigee.iam.gserviceaccount.com -
使用
access-context-manager policies list
指令取得政策 (或安全防護範圍) ID。將機構 ID 傳遞至這項指令,如下列範例所示:gcloud access-context-manager policies list --organization=organizations/GCP_ORG_ID
gcloud
會傳回與指定機構相關聯的政策清單,例如:gcloud access-context-manager policies list --organization=organizations/
2244340
NAME ORGANIZATION TITLE ETAG04081981
2244340
Default policy
421924c5a97c0Icu8VPC-SC 的政策 ID (也稱為範圍 ID) 是 VPC-SC 服務範圍的 ID,可做為專案和其他服務之間的界線。這是「
NAME
」欄中的值。
授予整合式入口網站範圍存取權的步驟
如要授予整合式入口網站範圍存取權,請按照下列步驟操作:
- 如先決條件所述,收集服務帳戶電子郵件地址和 VPC-SC 的政策 ID。
-
在管理員電腦上建立條件檔案,指定要透過安全防護範圍授予入口網站存取權的服務帳戶地址。
檔案名稱不限,但必須使用
*.yaml
副檔名。例如:my-portal-access-rules.yaml
。 -
在條件檔案中,新增
members
區段,指定 Apigee 服務帳戶,如下列範例所示:- members: - serviceAccount:
service-
8675309
@gcp-sa-apigee.iam.gserviceaccount.com請注意,新增
members
區段即可,不必新增存取層級區段。如要進一步瞭解如何建立條件檔案,請參閱依使用者或服務帳戶限制存取權。 - 使用
access-context-manager levels create
指令建立存取層級,例如:gcloud access-context-manager levels create ACCESS_LEVEL_ID \ --title ACCESS_LEVEL_TITLE \ --basic-level-spec PATH/TO/CONDITIONS_FILE.yaml \ --policy=POLICY_ID
其中:
- ACCESS_LEVEL_ID 是要授予的新存取層級 ID,例如
my-portal-access-level
。 - ACCESS_LEVEL_TITLE 是存取層級的標題,標題可以隨意命名,但 Google 建議您提供有意義的值,方便您和其他管理員瞭解標題的適用對象。例如「我的入口網站存取層級」。
- CONDITIONS_FILE 是您在上一個步驟中建立的 YAML 檔案路徑。
- POLICY_ID 是政策或範圍 ID。
例如:
gcloud access-context-manager levels create
my-portal-access-level
\ --title My Portal Access Level \ --basic-level-spec ~/my-portal-access-rules.yaml
\ --policy=04081981
- ACCESS_LEVEL_ID 是要授予的新存取層級 ID,例如
- 使用
access-context-manager perimeters update
指令,以新的存取層級更新服務範圍:gcloud access-context-manager perimeters update POLICY_ID \ --add-access-levels=ACCESS_LEVEL_ID \ --policy=POLICY_ID
例如:
gcloud access-context-manager perimeters update
04081981
\ --add-access-levels=my-portal-access-level
\ --policy=04081981
疑難排解
請確認下列事項:
- 如果 GCP 專案未啟用 Access Context Manager API,當您嘗試列出或設定政策時,
gcloud
會提示您啟用該 API。 - 取得機構詳細資料時,請務必使用 GCP 機構 ID,而非 Apigee 機構 ID。
- 本節所述的部分指令需要提升權限;舉例來說,如要取得專案的服務帳戶詳細資料,您必須是該專案的擁有者。
-
如要確認服務帳戶是否存在,請執行
iam service-accounts describe
指令,如下列範例所示:gcloud iam service-accounts describe
service-
8675309
@gcp-sa-apigee.iam.gserviceaccount.comgcloud
會傳回服務帳戶的相關資訊,包括顯示名稱和所屬專案 ID。如果服務帳戶不存在,gcloud
會傳回NOT_FOUND
錯誤。
限制
Apigee 與 VPC Service Controls 整合時,有以下限制:
- 如要設定整合式入口網站,必須採取額外步驟。
- 您必須在服務範圍內部署 Drupal 入口網站。