本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Oracle 原生網路加密
Amazon RDS 支援 Oracle 原生網路加密 (NNE)。使用NATIVE_NETWORK_ENCRYPTION
此選項,您可以在資料庫執行個體移入和移出資料庫執行個體時加密資料。Amazon RDS 可支援 Oracle 資料庫所有版本的 NNE。
Oracle 原生網路加密的詳細討論超出本指南的範圍,但是在決定要使用哪個解決方案進行部署之前,您應該瞭解每一個演算法和金鑰的優缺點。如需可透過 Oracle 原生網路加密使用之演算法和金鑰的相關資訊,請參閱 Oracle 文件中的配置網路資料加密
注意
您可以使用原生網路加密或 Secure Sockets Layer,但不能同時使用兩者。如需詳細資訊,請參閱 Oracle Secure Sockets Layer。
原生網路加密選項設定
您可以同時在伺服器和用戶端上指定加密需求。例如,當資料庫執行個體使用資料庫連結連線到另一個資料庫時,資料庫執行個體可以充當用戶端。您可能想要避免在伺服器端強制加密。例如,您可能不希望因為伺服器要求而強制所有用戶端通訊使用加密。在這種情況下,您可以使用 SQLNET.*CLIENT
選項,強制在用戶端上執行加密。
Amazon RDS 支持該NATIVE_NETWORK_ENCRYPTION
選項的以下設置。
注意
當您使用逗號區隔選項設定的值時,請不要在逗號後面加上空格。
選項設定 | 有效值 | 預設值 | 描述 |
---|---|---|---|
|
|
|
使用非安全加密的用戶端嘗試連接至資料庫時伺服器的行為。如果為 如果設定為
|
|
|
|
使用非安全加密的用戶端嘗試連接至資料庫時伺服器的行為。以下加密方式被視為不安全:
如果設定為 如果設定為
|
|
|
|
資料庫執行個體連線至用戶端或充當用戶端的伺服器時的資料完整性行為。當資料庫執行個體使用資料庫連結時,它會充當用戶端。
|
|
|
|
用戶端或做為用戶端的伺服器連線至資料庫執行個體時的資料完整性。當資料庫執行個體使用資料庫連結時,它會充當用戶端。
|
|
|
|
總和檢查演算法的清單。 您可以指定一值或逗號分隔的值清單。如果您使用逗號,請不要在逗號後面插入空格;否則,您會收到 此參數和 |
|
|
|
總和檢查演算法的清單。 您可以指定一值或逗號分隔的值清單。如果您使用逗號,請不要在逗號後面插入空格;否則,您會收到 此參數和 |
|
|
|
用戶端或充當用戶端的伺服器連線至資料庫執行個體時用戶端的加密行為。當資料庫執行個體使用資料庫連結時,它會充當用戶端。
|
|
|
|
用戶端或充當用戶端的伺服器連線至資料庫執行個體時伺服器的加密行為。當資料庫執行個體使用資料庫連結時,它會充當用戶端。
|
|
|
|
用戶端所使用之加密演算法的清單。用戶端會依序嘗試每一種演算法來試圖解密伺服器輸入,直到演算法成功或達到清單結尾為止。 Amazon RDS 會使用來自 Oracle 的下列預設清單。RDS 會從
您可以指定一值或逗號分隔的值清單。如果您使用逗號,請不要在逗號後面插入空格;否則,您會收到 此參數和 |
|
|
|
資料庫執行個體所使用之加密演算法的清單。資料庫執行個體會依序使用每一個演算法,以嘗試解密用戶端輸入,直到演算法成功或直到達到清單結尾。 Amazon RDS 會使用來自 Oracle 的下列預設清單。您可以變更順序或限制用戶端將接受的演算法。
您可以指定一值或逗號分隔的值清單。如果您使用逗號,請不要在逗號後面插入空格;否則,您會收到 此參數和 |
新增原生網路加密選項
將NATIVE_NETWORK_ENCRYPTION
選項新增至資料庫執行個體的一般程序如下:
建立新的選項群組,或是複製或修改現有選項群組。
將選項新增至選項群組。
將選項群組與資料庫執行個體建立關聯。
當選項群組為作用中時,NNE 就會是作用中的狀態。
若要使用 [新增網路加密] 選項至資料庫執行個體 AWS Management Console
-
針對 Engine (引擎),選擇您想要使用的 Oracle 版本。所有版本都支援 NNE。
-
針對 Major engine version (主要引擎版本),請選擇您資料庫執行個體的版本。
如需詳細資訊,請參閱 建立選項群組。
-
將「網路加密」選項新增至選項群組。如需新增選項的詳細資訊,請參閱將選項新增至選項群組。
注意
新增 NATIVE_NETWORK_COMPARY 選項之後,您不需要重新啟動資料庫執行個體。只要選項群組為作用中,NNE 就會是作用中的狀態。
-
將選項群組套用至新的或現有的資料庫執行個體:
-
針對新的資料庫執行個體,您會在啟動執行個體時套用選項群組。如需更多詳細資訊,請參閱 建立 Amazon RDS 資料庫執行個體。
-
針對現有的資料庫執行個體,您可以透過修改執行個體並附加新的選項群組來套用選項群組。新增 NATIVE_NETWORK_ 加密選項後,您不需要重新啟動資料庫執行個體。只要選項群組為作用中,NNE 就會是作用中的狀態。如需詳細資訊,請參閱 修改 Amazon RDS 資料庫執行個體。
-
在 sqlnet.ora 中設定 NNE 值
您可以透過 Oracle 原生網路加密,在伺服器端和用戶端設定網路加密。用戶端是用來連線至資料庫執行個體的電腦。您可以在 sqlnet.ora 中指定下列用戶端設定:
-
SQLNET.ALLOW_WEAK_CRYPTO
-
SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS
-
SQLNET.CRYPTO_CHECKSUM_CLIENT
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
-
SQLNET.ENCRYPTION_CLIENT
-
SQLNET.ENCRYPTION_TYPES_CLIENT
如需相關資訊,請參閱 Oracle 文件中的配置 Oracle 伺服器和用戶端的網路資料加密和完整性
有時,資料庫執行個體會拒絕來自應用程式的連線請求。例如,當用戶端和伺服器上的加密演算法不相符時,可能會出現拒絕情況。若要測試 Oracle 原生網路加密,請將下列幾行新增至用戶端上的 sqlnet.ora 檔案:
DIAG_ADR_ENABLED=off TRACE_DIRECTORY_CLIENT=/tmp TRACE_FILE_CLIENT=nettrace TRACE_LEVEL_CLIENT=16
嘗試連線時,上述幾行會在用戶端上產生一個稱為 /tmp/nettrace*
的追蹤檔。追蹤檔案會包含連線的相關資訊。如需您在使用 Oracle 原生網路加密時所發生之連線相關問題的詳細資訊,請參閱 Oracle 資料庫文件中的關於溝通加密和完整性
修改原生網路加密選項設定
啟用 NATIVE_NETWORK_ENCRYPTION
選項後,您可以修改其設定。目前,您只能使用 AWS CLI 或 RDS API 修改NATIVE_NETWORK_ENCRYPTION
選項設定。您無法使用主控台。下列範例會修改選項中的兩個設定。
aws rds add-option-to-option-group \ --option-group-name my-option-group \ --options "OptionName=NATIVE_NETWORK_ENCRYPTION,OptionSettings=[{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256},{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256}]" \ --apply-immediately
若要了解如何使用 CLI 修改選項設定,請參閱 AWS CLI。如需每項設定的詳細資訊,請參閱原生網路加密選項設定。
修改 CRYPTO_CHECKSUM_* 值
如果您修改 NATIVE_NETWORK_COMPARY 選項設定,請確定下列選項設定至少具有一個通用密碼:
-
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
-
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
下列範例顯示您可以修改 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
的情況。此組態有效,因為 CRYPTO_CHECKSUM_TYPES_CLIENT
和 CRYPTO_CHECKSUM_TYPES_SERVER
兩者皆使用 SHA256
。
選項設定 | 修改前的值 | 修改後的值 |
---|---|---|
|
|
未變更 |
|
|
SHA1,MD5,SHA256 |
另一個範例,假設您想要將 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER
從其預設設定修改為 SHA1,MD5
。在這種情況下,請確認您將 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
設定為 SHA1
或 MD5
。這些演算法不會包含在 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT
的預設值中。
修改 ALLOW_WEAK_CRYPTO* 設定
要將 SQLNET.ALLOW_WEAK_CRYPTO*
選項從預設值設定為 FALSE
,請確保符合下列條件:
-
SQLNET.ENCRYPTION_TYPES_SERVER
和SQLNET.ENCRYPTION_TYPES_CLIENT
具有一個相符的安全加密方法。如果方法不是DES
、3DES
或RC4
(所有金鑰長度),則該方法被認為是安全的。 -
SQLNET.CHECKSUM_TYPES_SERVER
和SQLNET.CHECKSUM_TYPES_CLIENT
具有一個相符的檢查總和方法。如果方法不是MD5
,則該方法被認為是安全的。 -
用戶端已使用 2021 年 7 月 PSU 修補。如果用戶端未修補,則用戶端會失去連線並接收到
ORA-12269
錯誤。
下列範例顯示範例 NNE 設定。假定將 SQLNET.ENCRYPTION_TYPES_SERVER
和 SQLNET.ENCRYPTION_TYPES_CLIENT
設定為 FALSE,從而阻止非安全連線。檢查總和選項設定滿足先決條件,因為它們都具有 SHA256
。但是,SQLNET.ENCRYPTION_TYPES_CLIENT
和 SQLNET.ENCRYPTION_TYPES_SERVER
使用 DES
、3DES
以及 RC4
加密方法,這些方法是不安全的。因此,要將 SQLNET.ALLOW_WEAK_CRYPTO*
選項設定為 FALSE
,請先將 SQLNET.ENCRYPTION_TYPES_SERVER
和 SQLNET.ENCRYPTION_TYPES_CLIENT
設為安全加密方法,例如 AES256
。
選項設定 | 值 |
---|---|
|
|
|
SHA1,MD5,SHA256 |
|
|
|
|
移除原生網路加密選項
您可以從資料庫執行個體中移除 NNE。
若要從資料庫執行個體中移除 NATIVE_NETWORK_ENCRYPTION
選項,請執行下列其中一個動作:
-
若要從多個資料庫執行個體移除
NATIVE_NETWORK_ENCRYPTION
選項,請從它們所屬的選項群組中移除該選項。此變更會影響使用選項群組的所有資料庫執行個體。移除NATIVE_NETWORK_ENCRYPTION
選項後,您不需要重新啟動資料庫執行個體。如需詳細資訊,請參閱 從選項群組移除選項。 -
若要從單一資料庫執行個體移除選項,請修改資料庫執行個體,並指定不包含該選項的其他選
NATIVE_NETWORK_ENCRYPTION
項群組。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。移除NATIVE_NETWORK_ENCRYPTION
選項之後,就不需要重新啟動資料庫執行個體。如需更多詳細資訊,請參閱 修改 Amazon RDS 資料庫執行個體。