我想要將我佈建的 Amazon Aurora 資料庫叢集設定為可公開存取,並保護我的 Aurora 資料庫叢集不受外部連線影響。
簡短說明
若要讓您的 Aurora 資料庫叢集可公開存取,叢集中的執行個體必須具有公共 IP 位址,並在公共子網路中執行。
對於 Aurora 資料庫執行個體,您無法選擇特定的子網路。您必須在建立執行個體時,選擇資料庫子網路群組。確定建立具有類似網路群組態的資料庫子網路群組。例如,為公共子網路建立一個資料庫子網路群組,為私有子網路建立另一個資料庫子網路群組。
將資料庫執行個體設定為允許來自 VPC 外部的連線後,您可以使用 TLS 來保護連線。
**注意:**最佳安全做法是不允許來自 VPC 外部的連線,除非您必須設定可公開存取。
解決方法
將資料庫執行個體的「可公開存取」設定為「是」
Amazon Relational Database Service (Amazon RDS) 資料庫執行個體的可公開存取設定可控制資料庫執行個體的公共 IP 位址指派情形。當您將該設定設為否時,資料庫執行個體不會擁有公共 IP 位址。當您將該設定設為是時,資料庫執行個體將同時擁有公共和私有 IP 位址。
若要將資料庫執行個體的可公開存取設定變更為是,請完成下列步驟:
- 開啟 Aurora and RDS console (Aurora 和 RDS 主控台)。
- 在導覽窗格中,選擇 Databases (資料庫),然後選擇資料庫執行個體。
- 選擇 Modify (修改)。
- 在Connectivity (連線) 區段中,選擇 Additional configuration (其他組態),然後選擇 Publicly accessible (可公開存取)。
- 選擇 Continue (繼續)。
- 在 Schedule modifications (排程修改) 區段中,選擇最適合您使用案例的選項。
**注意:**Apply immediately (立即套用) 選項可能會導致停機。如需詳細資訊,請參閱使用排程修改設定。
- 選擇 Modify DB instance (修改資料庫執行個體)。
在公共子網路中執行資料庫執行個體
若要確認您資料庫執行個體的公共子網路可以存取網際網路,請完成以下步驟:
- 建立網際網路閘道並將其連線到 VPC。
- 在導覽窗格中,選擇 Subnets (子網路)。
- 確認資料庫子網路群組中的所有子網路均使用含網際網路閘道的路由表。
- 如果子網路使用 VPC 的主要路由表,請為網際網路閘道新增 0.0.0.0/0 路由。您也可以建立路由到網際網路閘道的自訂路由表,然後將路由表與子網路建立關聯。
- 若要新增要連線到資料庫執行個體的來源公共 IP 位址,請設定傳入安全群組規則。
在 Type (類型) 中,選擇 MYSQL/Aurora 或 PostgreSQL。
在 Source (來源),選擇 Custom (自訂) 並手動輸入 CIDR 範圍。或者,選擇 My IP (我的 IP),從相同工作站連線到資料庫執行個體。
保護資料庫叢集不受 VPC 外部連線影響
使用 TLS 加密 VPC 外部的連線,因為資料傳輸是透過網際網路進行的。若要確認您使用的是最高層級的安全性,請使用 ssl-ca 參數傳遞憑證認證機構 (CA) 憑證,然後啟用主機名稱驗證。
若要測試 TLS 連線,請針對您使用的 Aurora 版本執行以下命令。
Amazon Aurora MySQL 相容版本 5.6
mysql -h test-aurora-56.cluster-############.us-east-1.rds.amazonaws.com -u test_user --ssl-ca=rds-combined-ca-bundle.pem --ssl-verify-server-cert
**注意:**將 test-aurora-56.cluster-############.us-east-1.rds.amazonaws.com 替換為您的叢集端點。將 test_user 替換為您的使用者名稱。將 rds-combined-ca-bundle.pem 替換為您的 CA 路徑。
Amazon Aurora MySQL 5.7 相容版及更新版本
mysql -h test-aurora-57.cluster-############.us-east-1.rds.amazonaws.com -u test_user --ssl-ca=rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY
**注意:**將 test-aurora-57.cluster-############.us-east-1.rds.amazonaws.com 替換為您的叢集端點。將 test_user 替換為您的使用者名稱。將 rds-combined-ca-bundle.pem 替換為您的 CA 路徑。
Amazon Aurora PostgreSQL 相容版本
psql -h test-aurora-pg.cluster-############.us-east-1.rds.amazonaws.com -p 5432 "dbname=postgres user=test_user sslrootcert=rds-combined-ca-bundle.pem sslmode=verify-full"
**注意:**將 test-aurora-pg.cluster-############.us-east-1.rds.amazonaws.com 替換為您的叢集端點。將 5432 替換為您的叢集連接埠。將 postgres 替換為您的資料庫使用者名稱,將 test_user 替換為您的使用者名稱。將 rds-combined-ca-bundle.pem 替換為您的 CA 路徑。
您也可以強制執行資料庫叢集的 TLS。如果是 Aurora MySQL 相容版,請在資料庫使用者層級設定 TLS。如果是 Aurora PostgreSQL 相容版,請將 rds.force_ssl 參數設為 1。
相關資訊
使用 SSL/TLS 來加密資料庫叢集的連線
使用 SSL/TLS 保護 Aurora PostgreSQL 資料
如何從 Linux 或 macOS 裝置使用堡壘主機連接至 Amazon RDS 資料庫執行個體?
如何在 Amazon Aurora 與 RDS 主控台中設定私有和公共 Aurora 端點?