將端對端安全套用至雲端應用程式
本指導教學可能會產生成本。 使用「成本估算器」根據您的預計用量生成成本估算。
本指導教學會引導您使用 IBM Cloud® 型錄中提供的關鍵安全服務,並說明如何將這些服務一起使用。 提供檔案共用的應用程式將落實安全概念。
若要建置完整的應用程式架構,必須清楚瞭解潛在的安全風險以及如何防範此類威脅。 應用程式資料是一種不能遺失、洩露或被盜的關鍵資源。 此外,靜態和動態資料應透過加密技術進行保護。 加密靜態資料可以防止資訊洩露,就算資訊遺失或被盜也不會外洩。 透過 HTTPS、SSL 和 TLS 等方法加密動態資料(例如,在網際網路上傳輸的資料)可防止竊聽和所謂的攔截式攻擊。
在許多應用程式中,另一個常見要求是針對使用者對特定資源的存取權進行鑑別和授權。 這可能需要支援不同的鑑別方法:使用社交身分的客戶和供應商、來自雲端管理的目錄的夥伴以及來自組織的身分提供者的員工。
目標
- 使用您自己的加密金鑰加密儲存桶中的內容。
- 要求使用者在存取應用程式前進行驗證。
- 監控和稽核與安全性相關的 API 呼叫以及其他跨雲端服務的動作。
本指導教學提供一個範例應用程式,讓使用者群組將檔案上傳到共用儲存區,並透過可共用鏈結提供對這些檔案的存取權。 應用程式以 Node.js 撰寫,並以儲存器形式部署至 IBM Cloud Kubernetes Service 或 Red Hat OpenShift on IBM Cloud。 它利用多種與安全相關的服務和特性來改善應用程式的安全狀態。
本教學適用於在 Classic Infrastructure 或 VPC Infrastructure 中執行的群集。
- 使用者連接至應用程式。
- 如果使用自訂網域和 TLS 憑證,憑證會由 Secrets Manager 管理和部署。
- App ID 可保護應用程式並將使用者重新導向到鑑別頁面。 使用者還可以進行註冊。
- 應用程式會根據儲存在 Container Registry 的映像檔,在 Kubernetes 叢集裡執行。 系統會自動掃描此映像檔以找出漏洞。
- 已上傳的檔案儲存在 Object Storage 中,隨附的 meta 資料儲存在 IBM Cloudant 中。
- 物件儲存體儲存區 App ID及 Secrets Manager 服務會利用使用者提供的金鑰來加密資料。
- 應用程式管理活動由IBM Cloud Activity Tracker Event Routing記錄並路由到IBM Cloud Logs進行分析。
開始之前
本指導教學需要:
- IBM Cloud CLI,
- IBM Cloud Kubernetes Service 外掛程式 (
kubernetes-service), - Container Registry 外掛程式 (
container-registry),
- IBM Cloud Kubernetes Service 外掛程式 (
kubectl以與 Kubernetes 叢集互動,git,以複製原始碼儲存庫。
您將在 開始使用解決方案指導教學 手冊中找到下載並安裝適用於您作業環境的這些工具的指示。
若要避免安裝這些工具,您可以從 IBM Cloud 主控台使用 Cloud Shell。
建立服務
在下一節中,您將建立應用程式所使用的服務。
決定應用程式的部署位置
您建立之所有資源的 位置 及 資源群組 應該符合 Kubernetes 叢集的 位置 及 資源群組。
擷取使用者和應用程式活動
必須將 IBM Cloud Activity Tracker Event Routing 配置為將審核事件路由到IBM Cloud Logs目標實例。 如果目前未在您的帳戶中進行配置,請依照 配置IBM Logs 目標 中所述路由審計事件。
在本指導教學結束時,您可檢閱藉由完成本指導教學的各步驟產生的事件。
為應用程式建立叢集
IBM Cloud Kubernetes Service 和 Red Hat OpenShift on IBM Cloud 提供在 Kubernetes 叢集裡執行的容器中部署高可用性應用程式的環境。
如果您已有 Kubernetes 叢集,且希望在本教學中重用,請跳過此節,在本教學的其餘部分中,叢集名稱將引用為 secure-file-storage-cluster,只需用您的叢集名稱替代即可。
在本指導教學中,具有一個 (1) 區域、一個 (1) 工作者節點及最小可用大小(規格)的最小叢集就足夠。 若要建立IBM Cloud Kubernetes Service集群,請依照 建立 VPC 集群 或 建立經典集群 的步驟進行。 若要建立Red Hat OpenShift on IBM Cloud集群,請依照 建立 VPC 集群 或 建立經典集群 的步驟進行。
使用您自己的加密金鑰
Key Protect 可協助您跨 IBM Cloud 服務為應用程式佈建加密金鑰。Key Protect 和 IBM Cloud Object Storage 一起合作以保護靜態資料。 在本節中,您將為儲存空間儲存區建立一個根金鑰。
- 建立 Key Protect的實例。
- 選擇位置。
- 將名稱設定為
secure-file-storage-kp。 - 選擇要建立服務實例的資源群組,然後按一下建立。
- 在金鑰下,按一下新增按鈕,建立新的根金鑰。 它將被用來加密儲存桶和 App ID 資料。
- 將「金鑰類型」設定為根金鑰。
- 將名稱設定為
secure-file-storage-root-enckey。 - 然後 新增金鑰。
自帶金鑰 (BYOK) 可藉由匯入現有根金鑰來提供。
設定用於使用者檔案的儲存空間
檔案分享應用程式會將檔案儲存到 Object Storage。 檔案與使用者之間的關係以元資料的形式儲存在 IBM Cloudant 資料庫中。 在本節中,您將建立和配置這些服務。
內容的儲存區
- 建立 Object Storage的實例。
- 選取 標準 方案,並將 名稱 設為
secure-file-storage-cos。 - 使用與先前服務相同的資源群組,然後按一下建立。
- 選取 標準 方案,並將 名稱 設為
- 在服務認證下,新建認證。
- 將名稱設定為
secure-file-storage-cos-acckey。 - 針對 角色,選取 撰寫者。
- 在 進階選項下,勾選 包括 HMAC 認證。 產生預先簽署的 URL 時需要此參數。
- 按一下新增。
- 記下憑證。 您將在之後的步驟中需要它們。
- 將名稱設定為
- 從導覽資訊看板中按一下 端點:
- 將 備援 設為 地區,並將 位置 設為目標位置:
- 針對 Classic 基礎結構:複製私人服務端點。 稍後在應用程式配置中將使用此端點。
- 針對 VPC 基礎結構:複製 Direct 服務端點。 稍後在應用程式配置中將使用此端點。
在建立儲存區之前,您將授與 Object Storage 服務實例對 Key Protect 服務實例中儲存的根金鑰的存取權。
- 移至 IBM Cloud 主控台中的 管理> 存取權(IAM)> 授權。
- 按一下建立按鈕。
- 在來源服務功能表中,選取 Cloud Object Storage。
- 切換至 根據所選屬性的資源,勾選 來源服務實例 並選取先前建立的 Object Storage 服務實例。
- 在目標服務功能表中,選取 Key Protect。
- 切換至 基於所選屬性的資源,勾選 實例 ID,選取先前建立的 Key Protect 服務實例。
- 啟用讀者角色。
- 按一下授權按鈕。
最後,建立儲存區。
- 從 資源清單 下 儲存體存取 Object Storage 服務實例。
- 按一下建立水桶,然後按一下自訂您的水桶。
- 對 name 使用唯一值,例如
<your-initials>-secure-file-upload。 - 將備援設定為地區。
- 將 Location 設為您建立 Key Protect 服務實體的相同位置。
- 將儲存空間類別設定為標準。
- 對 name 使用唯一值,例如
- 在 服務整合 (選用)/加密下,啟用 金鑰管理
- 按一下 使用現有實例,以選取先前建立的 Key Protect 服務實例
- 選取 secure-file-storage-root-enckey 作為金鑰,然後按一下 關聯金鑰。
- 在服務整合(可選)/監控和活動追蹤下,啟用活動追蹤以保留審核事件以供分析。
- 按一下勾號之後,應該會顯示地區中 Activity Tracker 實例的服務資訊。
- 現在,啟用追蹤資料事件,並選擇讀寫為資料事件。
- 按一下建立儲存區。
使用者與其檔案之間的資料庫對映關係
IBM Cloudant 資料庫將包含從應用程式上傳的所有檔案的 meta 資料。
- 建立 IBM Cloudant 服務的實例。
- 選取 Cloudant 作為供應項目。
- 選取與先前服務相同的 多租戶 環境和 地區。
- 將名稱設定為
secure-file-storage-cloudant。 - 使用與先前服務相同的資源群組。
- 將 鑑別方法 設為 IAM。
- 按一下建立。
- 回到資源清單,找到新建立的服務,然後按一下它。 注意:您需要等待狀態變更為 Active。
- 在服務認證下,新建認證。
- 將名稱設定為
secure-file-storage-cloudant-acckey。 - 針對 角色,選取 管理員。
- 保留其餘欄位的預設值。
- 按一下新增。
- 展開新建立的認證,並記下值。 您將在之後的步驟中需要它們。
- 在 管理下,按一下 啟動儀表板。
- 按一下建立資料庫,以建立一個名為
secure-file-storage-metadata的非分割資料庫。
鑑別使用者
使用 App ID,可以保護資源並新增鑑別至應用程式。 作為本指導教學未使用的替代方案,App ID 可以 整合 與 Kubernetes Service,以鑑別存取叢集中所部署應用程式的使用者。
在建立 App ID 服務之前,請授與服務存取權給 Key Protect 服務。 您必須是您正在使用之 Key Protect 實例的帳戶擁有者或管理者。 您還必須至少具有 App ID 服務的「檢視者」存取權。
- 移至 管理> 存取 IAM> 授權,然後按一下 建立。
- 選取 App ID 服務作為來源服務。
- 選取 Key Protect 作為目標服務。
- 切換至 基於所選屬性的資源,勾選 實例 ID,選取先前建立的 Key Protect 服務實例。
- 在「服務」存取權下指派 讀者 角色。
- 按一下 授權,以確認委派的授權。
現在,建立 App ID 服務的實體。
-
導覽至 App ID 服務建立頁面。
- 請使用先前服務所用的相同 位置。
- 選取累進層級作為方案。
- 設定服務名稱為
secure-file-storage-appid。 - 選取與先前服務相同的 資源群組。
- 從個別下拉清單中選取授權的 Key Protect 服務 名稱 及 根金鑰。
- 按一下建立。
-
在鑑別設定標籤的管理鑑別下,新增指向將用於應用程式的網域的 Web 重新導向 URL。 URL 格式為
https://secure-file-storage.<Ingress subdomain>/redirect_uri。 例如:- 具有 Ingress 子網域:
mycluster-1234-d123456789.us-south.containers.appdomain.cloud - 重定向 URL 為
https://secure-file-storage.mycluster-1234-d123456789.us-south.containers.appdomain.cloud/redirect_uri。
App ID 要求網頁重定向 URL 為 https 或 http。 您可以在群集儀表板或使用
ibmcloud ks cluster get --cluster <cluster-name>檢視您的 Ingress 子網域。 - 具有 Ingress 子網域:
-
在運行環境活動的鑑別設定下的相同標籤中,啟用擷取 IBM Cloud Activity Tracker Event Routing 中的事件。
-
建立服務認證:
- 在服務認證下,新建認證。
- 將名稱設定為
secure-file-storage-appid-acckey。 - 針對 角色,選取 管理員。
- 保留其餘欄位的預設值。
- 按一下新增。
您應該在 App ID 儀表板中自訂使用的身分提供者以及登入和使用者管理體驗。 為求簡化,本指導教學使用的是預設值。 對於正式作業環境,請考慮使用多因子鑑別 (MFA) 和進階密碼規則。
部署應用程式
現在所有服務都已配置。 在本節中,您要將指導教學應用程式部署到叢集。 所有這些都可以在 shell 環境 (終端機) 中完成。
取得程式碼
- 取得應用程式的程式碼:
git clone https://github.com/IBM-Cloud/secure-file-storage - 前往 secure-file-storage/app 目錄:
cd secure-file-storage/app
填寫配置設定和認證
-
如果您尚未登入,請使用
ibmcloud login或ibmcloud login --sso以互動方式登入。 將目標設為 IBM Cloud 地區及資源群組。ibmcloud target -r <region> -g <resource_group>您可以在文件的 一般 IBM Cloud CLI(ibmcloud)指令 主題中找到更多 CLI 指令。
-
在下一步中設定產生配置檔所需的環境變數。
- 透過取代
<YOUR_CLUSTER_NAME>來設定叢集名稱:export MYCLUSTER=<YOUR_CLUSTER_NAME> - 使用
ibmcloud ks指令來設定 Ingress 子網域:export INGRESS_SUBDOMAIN=$(ibmcloud ks cluster get --cluster $MYCLUSTER --output json | jq -r 'try(.ingressHostname) // .ingress.hostname') - 使用
ibmcloud ks指令設定入口密碼:export INGRESS_SECRET=$(ibmcloud ks cluster get --cluster $MYCLUSTER --output json | jq -r 'try(.ingressSecretName) // .ingress.secretName') - 將映像檔儲存庫名稱設為預先建置的映像檔
icr.io/solution-tutorials/tutorial-cloud-e2e-security:export IMAGE_REPOSITORY=icr.io/solution-tutorials/tutorial-cloud-e2e-security - 透過取代預設值來設定其他環境變數:
export BASENAME=secure-file-storage - 設定要使用的名稱空間:
export TARGET_NAMESPACE=default - 僅當您對映像檔使用
default名稱空間及 IBM Cloud Container Registry 以外的另一個 Kubernetes 名稱空間時,才選擇性地設定$IMAGE_PULL_SECRET環境變數。 這需要額外的 Kubernetes 設定(例如,在新命名空間中建立容器註冊密碼 )。
- 透過取代
-
執行下列指令,以產生
secure-file-storage.yaml和secure-file-storage-ingress.yaml。 它將使用您剛剛與範本檔secure-file-storage.template.yaml及secure-file-storage-ingress.template.yaml一起配置的環境變數。./generate_yaml.sh例如,假設應用程式部署到預設的 Kubernetes 命名空間:
Script 使用的環境變數 變數 值 說明 $IMAGE_PULL_SECRET使用提供的影像時不要定義 用於存取登錄的密碼。 $IMAGE_REPOSITORYicr.io/solution-tutorials/tutorial-cloud-e2e-security 或 icr.io/namespace/image-name 基於註冊表 URL、命名空間和影像名稱的已建立影像的 URL別碼。 $TARGET_NAMESPACE預設 將在其中推送應用程式的 Kubernetes 名稱空間。 $INGRESS_SUBDOMAINsecure-file-stora-123456.us-south.containers.appdomain.cloud 從群集總覽頁面或使用 ibmcloud ks cluster get --cluster <your-cluster-name>擷取。$INGRESS_SECRETsecure-file-stora-123456 使用 ibmcloud ks cluster get --cluster <your-cluster-name>擷取。$BASENAMEsecure-file-storage 用來識別資源的字首。 -
將
credentials.template.env複製到credentials.env:cp credentials.template.env credentials.env -
編輯
credentials.env,並使用以下值填寫空白:- Object Storage 服務區域端點、儲存區名稱、為 Object Storage 服務建立的認證,
- secure-file-storage-cloudant 的認證、
- 及 App ID的認證。 變數
appid_redirect_uris是上面所討論的重新導向 URI 清單 (以逗點區隔)。
使用 Cloud Shell時,您可以使用
nano credentials.env來編輯檔案。
部署到叢集
- 取得叢集的存取權,如主控台概觀頁面中可從 動作 ... 功能表存取的 透過 CLI 連接 指示所述。
ibmcloud ks cluster config --cluster $MYCLUSTER --admin - 請檢查目標名稱空間中是否有可用的 Ingress 密碼。 如果沒有,您需要建立它。
如果 Ingress 密碼具有 CRN,請使用其名稱及 CRN 在目標名稱空間中建立密碼:ibmcloud ks ingress secret ls -c $MYCLUSTER如果 Ingress 密碼沒有 CRN,請使用下列指令在目標名稱空間中重建它:ibmcloud ks ingress secret create -c $MYCLUSTER -n $TARGET_NAMESPACE --cert-crn <crn-shown-in-the-output-above> --name <secret-name-shown-above>kubectl get secret $INGRESS_SECRET --namespace=ibm-cert-store -oyaml | grep -v '^\s*namespace:\s'| kubectl apply --namespace=$TARGET_NAMESPACE -f - - 建立應用程式用於取得服務認證的密碼:
kubectl create secret generic secure-file-storage-credentials --from-env-file=credentials.env - 部署應用程式。
kubectl apply -f secure-file-storage.yaml - 部署應用程式的網路遞送 ( ClusterIP 服務及 Ingress),以讓它可從公用網際網路存取。
kubectl apply -f secure-file-storage-ingress.yaml
測試應用程式
該應用程式可在 https://secure-file-storage.<your-cluster-ingress-subdomain>/ 上存取。
- 移至應用程式的首頁。 這會將您重新導向到 App ID 預設登入頁面。
- 使用有效電子郵件位址註冊新帳戶。
- 等待信箱收到用於驗證帳戶的電子郵件。
- 登入。
- 選擇要上傳的檔案。 按一下上傳。
- 對檔案使用共用動作,以產生預先簽署的 URL,此 URL 可以與要存取該檔案的其他人共用。 鏈結設定為在 5 分鐘後到期。
已鑑別使用者有自己的空間可儲存檔案。 雖然他們無法查看彼此的檔案,但可以產生預先簽署的 URL 來授與對特定檔案的暫時存取權。
您可以在 原始碼倉庫中找到更多關於應用程式的詳細資訊。
檢閱安全事件
既然已順利部署應用程式及其服務,現在可以檢閱該處理程序產生的安全事件。 所有事件都在 IBM Cloud Logs 實例中集中提供。
- 從 Observability 儀表板中,選擇 Cloud Logs 標籤並找到正在接收審核事件的IBM Cloud Logs實例,然後點選開啟儀表板。
- 檢閱佈建資源以及與資源互動時傳送到服務的所有日誌。
選用:使用自訂網域並加密網路資料流量
預設情況下,應用程式可在 containers.appdomain.cloud 的一般子網域上存取。 但是,也可以將自訂網域用於部署的應用程式。 若要持續支援 https,需要提供對加密網路資料流量的存取權(所需主機名稱的憑證或萬用字元憑證)。 有各種服務組合可用來管理 DNS 名稱及 TLS 憑證,以整合至 Kubernetes 應用程式。 本指導教學將使用下列服務:
- DNS 子網域 secure-file-storage,屬於您自己的自訂 DNS 網域,由 IBM Cloud Internet Services (CIS) 服務管理。 為了簡化本指導教學中的步驟,我們將使用 example.com 作為自訂 DNS 網域的名稱,請務必在所有步驟中以您的自訂 DNS 網域取代。
- Let 's Encrypt,以產生 TLS 憑證。
- IBM Cloud Secrets Manager,以與 Let 's Encrypt 整合來產生 secure-file-storage.example.com 的 TLS 憑證並安全地儲存它。
- Kubernetes 外部密鑰操作員,以直接從 Secrets Manager 取回密鑰 TLS 憑證
您也可以建立 CNAME (指向 DNS 提供者的應用程式 URI),產生 TLS 憑證並將其元件匯入至 Secrets Manager,而不是下列步驟。
配置CIS和Secrets Manager實例
- 需要 IBM Cloud Internet Services 實例。 請使用現有的實例,或從這個 型錄項目 建立實例。 提供一些定價方案,包括免費試用。
新 CIS 的佈建處理程序將說明如何配置現有的 DNS 登記員 (可能不在 IBM Cloud中) 使用 CIS提供的網域名稱伺服器。 在 Shell 視窗中匯出自訂網域:
export MYDOMAIN=example.com - 需要一個 Secrets Manager 的實例。 使用現有實例或建立 建立 Secrets Manager 服務實例 中說明的新實例。 如果建立新的實例,請將它命名為 secure-file-storage-sm。 您可以與先前建立的 Key Protect 實例整合,以加強靜態密鑰的安全。
使用 Kubernetes 叢集 Ingress 子網域 作為別名,在 CIS 實例中建立 DNS 項目。
- 開啟 CIS 服務實例,您可以在 資源清單 中找到它。
- 按一下左側的 可靠性 標籤。
- 按一下上方的 DNS 索引標籤。
- 向下捲動至「DNS 記錄」區段,然後按一下 新增 以建立新記錄:
- 類型: CNAME
- 名稱: secure-file-storage
- 別名: 叢集的 Ingress 子網域。 您可以執行下列指令,在 Shell 中取得正確的值:
echo $INGRESS_SUBDOMAIN - 按一下 新增 以新增記錄。
將 Secrets Manager 實例連接至 Let 's Encrypt。
-
需要 Let 's Encrypt ACME 帳戶及相關聯的 .pem 檔案。 使用現有的或 建立一個:
- 安裝 acme-account-creation-tool。 建立 Let 's Encrypt ACME 帳戶 包含建立工具的指示和鏈結。
- 執行 acme-account-creation-tool,以特別針對此安全檔案儲存體範例建立帳戶。 以下是範例:
$ ./acme-account-creation-tool-darwin-amd64 -e YOUREMAIL -o secure-file-storage.example.com -d letsencrypt-prod INFO[2022-12-28T13:30:00-08:00] Registering a new account with the CA INFO[2022-12-28T13:30:00-08:00] Account information written to file : secure-file-storage.example.com-account-info.json INFO[2022-12-28T13:30:00-08:00] Private key written to file : secure-file-storage.example.com-private-key.pem Account Info { "email": "YOUREMAIL", "registration_uri": "https://acme-v02.api.letsencrypt.org/acme/acct/891897087", "registration_body": { "status": "valid", "contact": [ "mailto:YOUREMAIL" ] } }% $ ls secure-file-storage.example.com-account-info.json secure-file-storage.example.com-private-key.pem
-
將 Let 's Encrypt ACME 帳戶連接至 Secrets Manager 實例。 如需詳細資料,請參閱 在使用者介面中新增憑證管理中心配置:
- 開啟 Secrets Manager 服務實例,您可以在 資源清單 中找到它。
- 開啟左側的 密鑰引擎,然後按一下 公用憑證。
- 在 憑證管理中心 下,按一下 新增。
- 名稱: LetsEncrypt 和 憑證管理中心: Let 's Encrypt。
- 在 選取檔案 下,按一下 新增檔案,然後從選擇器中選擇 secure-file-storage.example.com-private-key.pem 或現有的 .pem 檔案。
- 按一下新增。
-
以 DNS 提供者身分連接 CIS:
- 在 DNS 提供者下,按一下 新增。
- 命名 順,並從下拉清單中選擇 Cloud Internet Services。
- 按下一步。
- 在 授權 標籤中,選擇 CIS 實例。
- 按一下新增。
-
在 Secrets Manager 中訂購憑證
- 開啟 Secrets Manager 服務,並選取左側的 密鑰。
- 按一下新增。
- 按一下 公用憑證,然後按 下一步。
- 請完成下列表單:
- 名稱-輸入您可以記住的名稱。
- 說明-輸入您選擇的說明。
- 按一下下一步。
- 在 憑證管理中心 下,選取已配置的 Let 's Encrypt 憑證管理中心引擎。
- 在 金鑰演算法下,挑選您偏好的演算法,
- 組合憑證-離開
- 自動憑證旋轉-離開
- 在 DNS 提供者 下,選取已配置的 DNS 提供者實例
- 按一下 選取網域 勾選 使用萬用字元選取,並保持不勾選網域本身,然後按一下 完成。
- 按下一步。
- 檢閱您的選擇,然後按一下 新增。
- 按一下作用中密鑰的三個垂直點功能表,然後選擇 詳細資料 並從對話框複製 CRN。 匯出 shell 中的值。 它看起來像這樣:
export PUBLIC_CERT_CRN=crn:v1:bluemix:public:secrets-manager:eu-de:a/abc123abc123abc123abc123:99999999-9999-9999-9999-999999999999:secret:aaaaaaaa-9999-9999-aaaa-123456781234
-
本指導教學利用服務對服務授權,為叢集提供 Secrets Manager 服務實例及其受管理密碼的存取權。
- 移至 IAM 授權頁面,然後按一下 建立 以新增授權。
- 在 來源 下,選取 Kubernetes Service,然後按一下以挑選 特定資源。 然後,針對 來源服務實例,選擇叢集。
- 在 目標 下選取 Secrets Manager,然後使用 特定資源 及 實例 ID,選取 Secrets Manager 服務實例。
- 最後,在 角色 下選取 管理員,然後按一下 授權來授與授權。
-
驗證 MYDOMAIN 及 PUBLIC_CERT_CRN 的值已匯出至環境:
echo MYDOMAIN $(printenv MYDOMAIN) echo PUBLIC_CERT_CRN $(printenv PUBLIC_CERT_CRN) -
從新的 TLS 憑證建立 Ingress 密碼。
ibmcloud ks ingress secret create --name secure-file-storage-certificate --cluster $MYCLUSTER --cert-crn $PUBLIC_CERT_CRN --namespace $TARGET_NAMESPACE -
執行下列指令,以產生配置檔的新副本。 它將使用您配置的所有環境變數,以及範本檔案
secure-file-storage.template.yaml和secure-file-storage.template-ingress.yaml。 您可能想要先儲存現行版本:cp secure-file-storage.yaml /tmp cp secure-file-storage-ingress.yaml /tmp./generate_yaml.sh -
將配置變更套用至叢集:
kubectl apply -f secure-file-storage-ingress.yaml -
切換回瀏覽器。 在 IBM Cloud 資源清單中,找到先前建立並配置的 App ID 服務,然後啟動其管理儀表板。
- 按一下左側的 管理鑑別,並按一下頂端的 鑑別設定 標籤。
- 在新增網頁重定向 URL 表單中,新增
https://secure-file-storage.example.com/redirect_uri為另一個 URL。
- 現在,一切應該都已就緒。 在您設定的自訂網域
https://secure-file-storage.<your custom domain>上存取應用程式,以測試應用程式。
安全:替換服務認證
為了維護安全,服務認證、密碼及其他金鑰應該定期更換(替換)。 許多安全原則會要求每 90 天或依類似頻率變更密碼及認證。 此外,當員工離開團隊,或是發生(疑似)資安事件時,應該立即變更存取權。
在本教程中,服務被用於不同的用途,從儲存檔案和元資料,到確保應用程式存取安全,再到管理容器影像。 輪換服務認證通常涉及以下作業:
- 重新命名現有服務金鑰,
- 使用先前使用的名稱建立一組新的認證,
- 取代現有 Kubernetes 密碼中的存取資料並套用變更,
- 以及在驗證後,藉由刪除舊的服務金鑰來停用舊認證。
擴展指導教學
安全永無止境。 請嘗試以下建議來加強應用程式的安全。
- 將 IBM Key Protect 取代為 Hyper Protect Crypto Services,以提高加密金鑰的安全,加強對加密金鑰的控制。
共用資源
如果您想要與其他人一起使用此解決方案指導教學的資源,則可以共用所有或僅部分元件。IBM Cloud Identity and Access Management(IAM) 啟用使用者和服務 ID 的鑑別,以及雲端資源的存取控制。 若要授與對資源的存取權,您可以將 預先定義的存取角色 指派給使用者、服務 ID 或 存取群組。 您可以建立存取群組,將一組使用者和服務 ID 組織成單一實體。 它可讓您輕鬆指派存取權。 您可以將單一原則指派給群組,而不是針對每個個別使用者或服務 ID 指派相同的存取權多次。 因此,您可以在開發專案上組織角色的群組,並調整安全和專案管理。
您可以在這裡找到個別服務及其可用 IAM 存取角色的相關資訊:
- Kubernetes Service 或 Red Hat OpenShift on IBM Cloud 相同。
- Container Registry
- App ID
- IBM Cloudant
- Object Storage
- IBM Cloud Activity Tracker Event Routing
- Key Protect
- Secrets Manager
若要開始使用,請參閱 存取權管理及如何定義存取群組的最佳作法。
移除資源
若要移除資源,請刪除部署的容器,然後刪除佈建的服務。
如果您與其他使用者共用帳戶,請務必僅刪除您自己的資源。
-
刪除已部署的網路配置及儲存器:
kubectl delete -f secure-file-storage-ingress.yaml之後,執行下列指令:
kubectl delete -f secure-file-storage.yaml -
刪除用於部署的密碼:
kubectl delete secret secure-file-storage-credentials -
如果您已使用 Secrets Manager,請 移除服務授權的相關服務。
-
在 IBM Cloud 資源清單中,找到為此指導教學建立的資源。 使用搜尋方框和 secure-file-storage 作為模式。 藉由按一下每個服務旁邊的快速功能表,並選擇刪除服務來刪除每個服務。 請注意,Key Protect 服務只有在刪除金鑰後才能移除。 按一下該服務實例以前往相關儀表板,以及刪除金鑰。
視資源而定,它可能不會立即刪除,但會保留 (依預設會保留 7 天)。 您可以透過永久刪除資源或在保留期間內還原資源來收回資源。 請參閱本文件,以瞭解如何 使用資源收回。