View a markdown version of this page

安全支柱 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安全支柱

的雲端安全 AWS 是最高優先順序。身為 AWS 客戶,您可以受益於資料中心和網路架構,這些架構專為滿足最安全敏感組織的需求而建置。

安全性是 AWS 與您之間的共同責任。共同責任模型將此描述為雲端本身的安全和雲端內部的安全:

  • 雲端的安全性 – AWS 負責保護在 AWS 服務 中執行的基礎設施 AWS 雲端。 AWS 也為您提供可安全使用的服務。在AWS 合規計畫中,第三方稽核人員會定期測試和驗證 AWS 安全性的有效性。若要了解適用於 Amazon Neptune 的合規計劃,請參閱合規計劃範圍內的AWS 服務

  • 雲端的安全性 – 您的責任取決於您使用 AWS 服務 的 。您也必須對其他因素負責,包括資料的機密性、您公司的要求和適用法律和法規。如需有關資料隱私權的詳細資訊,請參閱資料隱私權常見問答集。如需歐洲資料保護的相關資訊,請參閱AWS 共同責任模型和 GDPR 部落格文章。

安全支柱可協助您了解如何在使用 Neptune 時套用共同責任模型。下列主題說明如何將 Neptune 設定為實現您的安全及合規目標。您也會了解如何使用其他 AWS 服務 來協助您監控和保護 Neptune 資源。

安全支柱包含下列主要重點領域:

  • 資料安全

  • 網路安全

  • 身分驗證和授權

實作資料安全性

資料外洩和違規會讓您的客戶面臨風險,並可能對您的公司造成重大負面影響。下列最佳實務有助於保護您的客戶資料免於意外和惡意暴露:

  • 叢集名稱、標籤、參數群組、 AWS Identity and Access Management (IAM) 角色和其他中繼資料不應包含機密或敏感資訊,因為該資料可能會出現在帳單或診斷日誌中。

  • 存放為 Neptune 資料之外部伺服器的 URIs或連結不應包含登入資料資訊來驗證請求。

  • Neptune 加密的執行個體可以協助保護您的資料免於發生未經授權的基礎儲存體存取,為資料提供另一層保護。您可以使用 Neptune 加密來提高部署在雲端之應用程式的資料保護。您也可以進行 Neptune 加密,以滿足靜態資料的合規要求。

    若要啟用新 Neptune 資料庫執行個體的加密,請在 Neptune 主控台的啟用加密區段中選擇 (預設為選取),或在其中設定 AWS::Neptune::DBCluster::StorageEncrypted 屬性 CloudFormation。如果啟用加密,Neptune 預設將使用 Amazon Relational Database Service (Amazon RDS) AWS 受管金鑰,或者您可以建立客戶受管金鑰。如需建立 Neptune 資料庫執行個體的資訊,請參閱建立新的 Neptune 資料庫叢集。如需詳細資訊,請參閱加密 Neptune 資源靜態。您的自動化和手動快照會使用您為 Neptune 叢集選取的相同加密。

  • 使用 SPARQL 和 openCypher 語言時,請練習適當的輸入驗證和參數化技術,以防止 SQL Injection 和其他形式的攻擊。避免使用使用者提供的輸入來建構使用字串串連的查詢。使用參數化查詢或預備陳述式,安全地將輸入參數傳遞至圖形資料庫。如需詳細資訊,請參閱 openCypher 參數化查詢和 SPARQL Injection Defence 的範例https://owasp.org/www-pdf-archive/Onofri-NapolitanoOWASPDayItaly2012.pdf

  • 對於 Gremlin 語言,請使用 Gremlin 語言變體,而不是直接傳遞字串型 Gremlin 指令碼,以避免潛在的注入問題。

保護您的網路

Amazon Neptune 資料庫叢集只能在 的虛擬私有雲端 (VPC) 中建立 AWS。在 Neptune 1.4.6.0 之前,Neptune 資料庫叢集的端點只能在該 VPC 內存取。從 Neptune 1.4.6.0 及更新版本開始,Neptune 執行個體可設定為透過網際網路公開存取。最佳實務是僅在非生產環境中使用此功能,以為您的開發人員啟用 Neptune 的簡化存取 (不過在 上一律需要 IAM 身分驗證才能啟用公有存取)。如果您已啟用公有可存取性,請考慮將資料庫連接埠的傳入安全群組規則設定為僅已知 IP 地址流量。在生產環境或使用包含敏感資料的叢集中,不允許公開存取並限制對 Neptune 資料庫叢集所在 VPC 的存取,以保護您的 Neptune 資料。如需詳細資訊,請參閱連線至 Amazon Neptune 圖形

為了保護您的傳輸中資料,Neptune 會使用安全通訊協定和密碼,透過 HTTPS 強制 SSL 連線至任何執行個體或叢集端點。Neptune 為您的 Neptune 資料庫執行個體提供 SSL 憑證。Neptune SSL 憑證僅支援叢集端點、讀取器端點和執行個體端點主機名稱。

如果您使用負載平衡器或代理伺服器 (例如 HAProxy),則必須使用 SSL 終止,並在代理伺服器上擁有自己的 SSL 憑證。SSL 傳遞沒有作用,因為提供的 SSL 憑證與代理伺服器主機名稱不符。如需使用 SSL 連線至 Neptune 端點的詳細資訊,請參閱使用 HTTP REST 端點連線至 Neptune 資料庫執行個體

實作身分驗證和授權

若要控制誰可以在 Neptune 資料庫叢集和資料庫執行個體上執行 Neptune 管理 動作,請啟用 IAM 資料庫身分驗證並使用 IAM 登入資料。當您 AWS 使用 IAM 登入資料連線至 時,您的 IAM 角色必須具有授予執行 Neptune 管理操作所需許可的 IAM 政策。確保您遵循最低權限原則,僅授予完成任務所需的許可。如需詳細資訊,請參閱使用不同類型的 IAM 政策來控制使用暫時登入資料的 Neptune 和 IAM 身分驗證存取權。

若要控制誰可以連線至 Neptune 叢集並查詢資料,您可以使用 IAM 向 Neptune 資料庫執行個體或資料庫叢集進行身分驗證。如果您在 Neptune 資料庫叢集中啟用 IAM 身分驗證,則必須先驗證存取資料庫叢集的任何人。如需詳細資訊,請參閱在 Neptune 中啟用 IAM 資料庫身分驗證,以取得啟用 IAM 身分驗證的步驟。

當 IAM 資料庫身分驗證啟用時,每個請求都必須使用 AWS Signature 第 4 版進行簽署。若要了解如何將簽署的請求傳送至已啟用 IAM 身分驗證的所有 Neptune 端點,請參閱使用 AWS 簽章版本 4 連接和簽署。許多程式庫和工具,例如 awscurl,已經支援 AWS Signature 第 4 版。

 為了與其他 互動 AWS 服務,Amazon Neptune 使用 IAM 服務連結角色。服務連結角色是直接連結至 Neptune 的一種獨特 IAM 角色類型。服務連結角色是由 Neptune 預先定義,並包含服務代表您呼叫其他 AWS 服務 所需的所有許可。如需詳細資訊,請參閱使用 Neptune 的服務連結角色