我有已佈建的 Amazon Aurora 資料庫叢集,且我想要設定為可公開存取。此外,我想要保護 Aurora 資料庫叢集不受外部連線侵擾。我該如何操作?
簡短說明
如要從 Amazon Virtual Private Cloud (Amazon VPC) 外部連線至 Aurora 資料庫叢集,叢集中的執行個體必須符合下列要求:
- 資料庫執行個體擁有公有 IP 地址。
- 資料庫執行個體在可公開存取的子網路中執行。
除了設定您的資料庫執行個體是否能從 VPC 外部連線之外,您也可以使用 Transport Layer Security (TLS) 保護連線。
解決方法
將資料庫執行個體的「可公開存取」設定為「是」
Amazon Relational Database Service (Amazon RDS) 資料庫執行個體的可公開存取設定可控制資料庫執行個體的公有 IP 地址指派情形。
- 如果設定為「否」,則資料庫執行個體將不會擁有公有 IP 地址。
- 如果設定為「是」,則資料庫執行個體將擁有公有和私有 IP 地址。
如要將資料庫執行個體的可公開存取設定變更為「是」,請按照下列步驟操作:
- 開啟 Amazon RDS 主控台。
- 從導覽窗格選擇「資料庫」,然後選擇資料庫執行個體。
- 選擇「修改」。
- 在「連線」下方,展開「其他組態」區段,然後選擇「可公開存取」。
- 選擇「繼續」。
- 選擇「修改資料庫執行個體」
注意: 您不需要選擇「立即套用」。如需「立即套用」如何影響停機時間的詳細資訊,請參閱使用立即套用參數。
在公有子網路中執行資料庫執行個體
公有子網路是與擁有網際網路閘道路由 (通常是預設路由 0.0.0.0/0) 的路由表相關的子網路。此路由會開啟子網路中的資料庫執行個體,以便與 VPC 外部資源通訊。
針對 Aurora 資料庫執行個體,您無法選擇特定子網路。請改為在建立執行個體時選擇資料庫子網路群組。
資料庫子網路群組是屬於 VPC 的子網路集合。建立基礎主機時,Amazon RDS 會從資料庫子網路群組中隨機選擇子網路。一般而言,VPC 擁有公有和私有子網路。如果資料庫子網路群組包含公有和私有子網路,請啟動公有子網路或私有子網路中的基礎主機。如果基礎主機已於私有子網路中啟動,您將無法從 VPC 外部連線至資料庫執行個體。
請改為使用相似網路組態的子網路來建立資料庫子網路群組。例如,為公有子網路建立資料庫子網路群組,並為私有子網路季戀第二個資料庫子網路群組。如需更多資訊,請參閱在子網路群組中使用資料庫執行個體。
按照下列步驟操作,確認您的資料庫執行個體使用的子網路擁有網際網路存取權:
- 確認您的 VPC 擁有附加的網際網路閘道。
- 確認資料庫子網路群組中的所有子網路均使用含網際網路閘道的路由表。
- 如果子網路使用 VPC 的主要路由表,請為網際網路閘道新增路由 (目的地為 0.0.0.0/0)。
- 如有必要,建立網際網路閘道的自訂路由表,並與子網路建立關聯。
- 在安全群組的輸入規則中,新增您想要連線至資料庫執行個體的來源公有 IP 地址。
- 針對規則類型,請根據您的引擎類型選擇「MySQL/Aurora」或「PostgreSQL」。
- 針對來源,請手動輸入 CIDR 範圍,或選擇「我的 IP」以從相同工作站連線至資料庫執行個體。
保護資料庫叢集不受 VPC 外部連線侵擾
您可以使用 TLS 來加密來自 VPC 外部的連線,因為資料傳輸是透過網際網路進行。如要確認您正在使用最高層級的安全措施,請使用 ssl-ca 參數來通過 CA 憑證,然後開啟主機名稱驗證。根據您使用的 Aurora 版本,使用下列 TLS 連線命令範例。
Amazon Aurora MySQL 5.6 相容版本及更新版本:
mysql -h test-aurora-56.cluster-xxxxxxxxxxxx.us-east-1.rds.amazonaws.com -u master_user --ssl-ca=rds-combined-ca-bundle.pem --ssl-verify-server-cert
Aurora MySQL 5.7 相容版本及更新版本:
mysql -h test-aurora-57.cluster-xxxxxxxxxxxx.us-east-1.rds.amazonaws.com -u master_user --ssl-ca=rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY
Amazon Aurora PostgreSQL 相容版本:
psql -h test-aurora-pg.cluster-xxxxxxxxxxxx.us-east-1.rds.amazonaws.com -p 5432 "dbname=postgres user=master_user sslrootcert=rds-combined-ca-bundle.pem sslmode=verify-full"
注意: 您也可以強制執行資料庫叢集的 TLS。針對 Aurora MySQL,您必須在資料庫使用者層級強制執行 TLS。針對 Aurora PostgreSQL 相容版本,請將 rds.force_ssl 參數設定為「1」。
相關資訊
使用 SSL/TLS 搭配 Aurora MySQL 資料庫叢集
使用 SSL 保護 Aurora PostgreSQL 資料
如何從 Linux/macOS 裝置使用堡壘主機連線至 Amazon RDS 資料庫執行個體?
如何在 Amazon RDS 主控台中設定私有和公有 Aurora 端點?