Oracle 기본 네트워크 암호화 - Amazon Relational Database Service

Oracle 기본 네트워크 암호화

Amazon RDS는 Oracle 기본 네트워크 암호화(NNE)를 지원합니다. NATIVE_NETWORK_ENCRYPTION 옵션을 사용하면 DB 인스턴스 간 이동 시 데이터를 암호화할 수 있습니다. Amazon RDS는 Oracle 데이터베이스의 모든 버전에 대해 NNE를 지원합니다.

Oracle 기본 네트워크 암호화에 대한 자세한 설명은 본 문서의 범위에서 벗어나지만 배포할 솔루션을 결정하려면 각 알고리즘과 키의 장단점은 잘 알고 있어야 합니다. Oracle 기본 네트워크 암호화를 통해 제공되는 알고리즘 및 키에 대한 자세한 내용은 Oracle 설명서의 Configuring Network Data Encryption을 참조하십시오. AWS 보안에 대한 자세한 내용은 AWS 보안 센터를 참조하세요.

참고

Native Network Encryption 또는 Secure Sockets Layer를 사용할 수 있지만 둘 다 사용할 수는 없습니다. 자세한 내용은 Oracle 보안 소켓 Layer 단원을 참조하십시오.

NATIVE_NETWORK_ENCRYPTION 옵션 설정

서버와 클라이언트 모두에서 암호화 요구 사항을 지정할 수 있습니다. DB 인스턴스는 예를 들어 데이터베이스 링크를 사용하여 다른 데이터베이스에 연결할 때 클라이언트 역할을 수행할 수 있습니다. 서버 측에서 암호화를 강제하지 않도록 할 수 있습니다. 예를 들어 서버에 필요하기 때문에 모든 클라이언트 통신에 암호화를 사용하도록 강제하지 않을 수 있습니다. 이 경우 SQLNET.*CLIENT 옵션을 사용하여 클라이언트 측에서 암호화를 강제할 수 있습니다.

Amazon RDS는 NATIVE_NETWORK_ENCRYPTION 옵션에 대해 다음 설정을 지원합니다.

참고

쉼표를 사용하여 옵션 설정의 값을 구분하는 경우 쉼표 뒤에 공백을 넣지 마십시오.

옵션 설정 유효값 기본값 설명

SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS

TRUE, FALSE

TRUE

비보안 암호를 사용하는 클라이언트가 데이터베이스에 연결을 시도할 때 서버의 동작입니다. TRUE인 경우, 클라이언트는 2021년 7월 PSU에 패치되지 않은 경우에도 연결할 수 있습니다.

설정이 FALSE인 경우 클라이언트는 2021년 7월 PSU로 패치된 경우에만 데이터베이스에 연결할 수 있습니다. SQLNET.ALLOW_WEAK_CRYPTO_CLIENTSFALSE로 설정하기 전에 다음 조건을 충족하는지 확인하세요.

  • SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENTDES, 3DES 또는 RC4가 아닌 일치하는 하나의 암호화 방법이 있습니다(모든 키 길이).

  • SQLNET.CHECKSUM_TYPES_SERVERSQLNET.CHECKSUM_TYPES_CLIENTMD5가 아닌 일치하는 보안 체크섬 방법이 하나 있습니다.

  • 클라이언트는 2021년 7월 PSU로 패치됩니다. 클라이언트가 패치되지 않은 경우 클라이언트는 연결을 끊고ORA-12269 오류를 받습니다.

SQLNET.ALLOW_WEAK_CRYPTO

TRUE, FALSE

TRUE

비보안 암호를 사용하는 클라이언트가 데이터베이스에 연결을 시도할 때 서버의 동작입니다. 다음 암호는 안전하지 않은 것으로 간주됩니다.

  • DES 암호화 방법(모든 키 길이)

  • 3DES 암호화 방법(모든 키 길이)

  • RC4 암호화 방법(모든 키 길이)

  • MD5 체크섬 방법

설정이 TRUE인 경우 클라이언트는 앞의 비보안 암호를 사용할 때 연결할 수 있습니다.

설정이 FALSE인 경우 데이터베이스는 클라이언트가 앞의 비보안 암호를 사용할 때 연결하는 것을 막습니다. SQLNET.ALLOW_WEAK_CRYPTOFALSE로 설정하기 전에 다음 조건을 충족하는지 확인하세요.

  • SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENTDES, 3DES 또는 RC4가 아닌 일치하는 하나의 암호화 방법이 있습니다(모든 키 길이).

  • SQLNET.CHECKSUM_TYPES_SERVERSQLNET.CHECKSUM_TYPES_CLIENTMD5가 아닌 일치하는 보안 체크섬 방법이 하나 있습니다.

  • 클라이언트는 2021년 7월 PSU로 패치됩니다. 클라이언트가 패치되지 않은 경우 클라이언트는 연결을 끊고ORA-12269 오류를 받습니다.

SQLNET.CRYPTO_CHECKSUM_CLIENT

Accepted, Rejected, Requested, Required

Requested

DB 인스턴스가 클라이언트 또는 클라이언트 역할을 하는 서버에 연결된 경우의 데이터 무결성 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다.

Requested 은(는) 클라이언트에서 DB 인스턴스가 체크섬을 수행할 필요가 없음을 나타냅니다.

SQLNET.CRYPTO_CHECKSUM_SERVER

Accepted, Rejected, Requested, Required

Requested

클라이언트 또는 클라이언트 역할을 하는 서버가 DB 인스턴스에 연결된 경우의 데이터 무결성 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다.

Requested 은(는) DB 인스턴스에서 클라이언트가 체크섬을 수행할 필요가 없음을 나타냅니다.

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

SHA256, SHA384, SHA512, SHA1, MD5

SHA256, SHA384, SHA512

체크섬 알고리즘 목록입니다.

단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표를 사용하는 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 InvalidParameterValue 오류가 발생합니다.

이 파라미터 및 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER 은(는) 공통 암호를 가져야 합니다.

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

SHA256, SHA384, SHA512, SHA1, MD5

SHA256, SHA384, SHA512, SHA1, MD5

체크섬 알고리즘 목록입니다.

단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표를 사용하는 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 InvalidParameterValue 오류가 발생합니다.

이 파라미터 및 SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT은(는) 공통 암호를 가져야 합니다.

SQLNET.ENCRYPTION_CLIENT

Accepted, Rejected, Requested, Required

Requested

클라이언트 또는 클라이언트 역할을 하는 서버가 DB 인스턴스에 연결된 경우의 클라이언트의 암호화 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다.

Requested 은(는) 클라이언트에서 서버의 트래픽을 암호화할 필요가 없음을 나타냅니다.

SQLNET.ENCRYPTION_SERVER

Accepted, Rejected, Requested, Required

Requested

클라이언트 또는 클라이언트 역할을 하는 서버가 DB 인스턴스에 연결된 경우의 서버의 암호화 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다.

Requested는 DB 인스턴스에서 클라이언트의 송신 트래픽을 암호화할 필요가 없음을 나타냅니다.

SQLNET.ENCRYPTION_TYPES_CLIENT

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

클라이언트에서 사용하는 암호화 알고리즘 목록입니다. 클라이언트에서는 알고리즘이 성공하거나 목록의 끝에 도달할 때까지 각 알고리즘을 순서대로 진행하여 서버 입력 복호화를 시도합니다.

Amazon RDS는 다음과 같은 Oracle의 기본 목록을 사용합니다. RDS는 RC4_256으로 시작하고 목록을 순서대로 진행합니다. 순서를 변경하거나 DB 인스턴스가 수락할 알고리즘을 제한할 수 있습니다.

  1. RC4_256: RSA RC4(256비트 키 크기)

  2. AES256: AES(256비트 키 크기)

  3. AES192: AES(192비트 키 크기)

  4. 3DES168112: 3키 Triple-DES(비트 유효 키 크기)

  5. RC4_128: RSA RC4(128비트 키 크기)

  6. AES128: AES(128비트 키 크기)

  7. 3DES1122키 Triple-DES(80비트 유효 키 크기)

  8. RC4_56: RSA RC4(56비트 키 크기)

  9. DES: Standard DES(56비트 키 크기)

  10. RC4_40: RSA RC4(40비트 키 크기)

  11. DES40: DES40(40비트 키 크기)

단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표인 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 InvalidParameterValue 오류가 발생합니다.

이 파라미터 및 SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER은(는) 공통 암호를 가져야 합니다.

SQLNET.ENCRYPTION_TYPES_SERVER

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

RC4_256, AES256, AES192, 3DES168, RC4_128, AES128, 3DES112, RC4_56, DES, RC4_40, DES40

DB 인스턴스에서 사용하는 암호화 알고리즘 목록입니다. DB 인스턴스에서는 알고리즘이 성공하거나 목록의 끝에 도달할 때까지 각 알고리즘을 순서대로 사용하여 클라이언트 입력을 해독합니다.

Amazon RDS는 다음과 같은 Oracle의 기본 목록을 사용합니다. 순서를 변경하거나 클라이언트가 수락할 알고리즘을 제한할 수 있습니다.

  1. RC4_256: RSA RC4(256비트 키 크기)

  2. AES256: AES(256비트 키 크기)

  3. AES192: AES(192비트 키 크기)

  4. 3DES168112: 3키 Triple-DES(비트 유효 키 크기)

  5. RC4_128: RSA RC4(128비트 키 크기)

  6. AES128: AES(128비트 키 크기)

  7. 3DES1122키 Triple-DES(80비트 유효 키 크기)

  8. RC4_56: RSA RC4(56비트 키 크기)

  9. DES: Standard DES(56비트 키 크기)

  10. RC4_40: RSA RC4(40비트 키 크기)

  11. DES40: DES40(40비트 키 크기)

단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표인 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 InvalidParameterValue 오류가 발생합니다.

이 파라미터 및 SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER은(는) 공통 암호를 가져야 합니다.

NATIVE_NETWORK_ENCRYPTION 옵션 추가

NATIVE_NETWORK_ENCRYPTION 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

  1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

  2. [] 옵션을 옵션 그룹에 추가합니다.

  3. 옵션 그룹을 DB 인스턴스에 연결합니다.

옵션 그룹이 활성화되면 NNE가 활성화됩니다.

AWS Management Console을 사용하여 DB 인스턴스에 NATIVE_NETWORK_ENCRYPTION 옵션을 추가하는 방법
  1. [Engine]에서 사용할 Oracle 버전을 선택합니다. NNE는 모든 에디션에서 지원됩니다.

  2. 메이저 엔진 버전에서 DB 인스턴스의 버전을 선택합니다.

    자세한 내용은 옵션 그룹 생성 단원을 참조하십시오.

  3. 옵션 그룹에 NATIVE_NETWORK_ENCRYPTION 옵션을 추가합니다. 옵션 추가에 대한 자세한 내용은 옵션 그룹에 옵션 추가 섹션을 참조하세요.

    참고

    NATIVE_NETWORK_ENCRYPTION 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되자마자 NNE가 활성화됩니다.

  4. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다:

    • 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 Amazon RDS DB 인스턴스 생성 섹션을 참조하세요.

    • 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. NATIVE_NETWORK_ENCRYPTION 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되자마자 NNE가 활성화됩니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.

sqlnet.ora에서 NNE 값 설정

Oracle 기본 네트워크 암호화를 사용하여 서버 측 및 클라이언트 측에서 네트워크 암호화를 설정할 수 있습니다. 해당 클라이언트는 DB 인스턴스에 연결하는 데 사용되는 컴퓨터입니다. 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 설명서의 Configuring Network Data Encryption and Integrity for Oracle Servers and Clients를 참조하십시오.

DB 인스턴스가 애플리케이션의 연결 요청을 거부하는 경우가 있습니다. 예를 들어 클라이언트와 서버의 암호화 알고리즘이 일치하지 않는 경우 거부가 발생할 수 있습니다. Oracle 기본 네트워크 암호화를 테스트하려면 클라이언트의 sqlnet.ora 파일에 다음 줄을 추가합니다.

DIAG_ADR_ENABLED=off TRACE_DIRECTORY_CLIENT=/tmp TRACE_FILE_CLIENT=nettrace TRACE_LEVEL_CLIENT=16

연결이 시도될 때 선행 줄이 클라이언트에서 /tmp/nettrace*(이)라는 추적 파일을 생성합니다. 추적 파일에는 연결 관련 정보가 포함되어 있습니다. Oracle 기본 네트워크 암호화를 사용할 때 연결 관련 문제에 대한 자세한 내용은 Oracle 데이터베이스 설명서의 About Negotiating Encryption and Integrity를 참조하세요.

NATIVE_NETWORK_ENCRYPTION 옵션 설정 수정

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 섹션을 참조하세요. 각 설정에 대한 자세한 내용은 NATIVE_NETWORK_ENCRYPTION 옵션 설정 단원을 참조하십시오.

CRYPTO_CHECKSUM_* 값 수정

NATIVE_NETWORK_ENCRYPTION 옵션 설정을 수정하는 경우 다음 옵션 설정에 공통 암호가 하나 이상 있어야 합니다.

  • SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

  • SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

다음 예제에서는 SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER를 수정한 시나리오를 보여줍니다. 구성은 CRYPTO_CHECKSUM_TYPES_CLIENTCRYPTO_CHECKSUM_TYPES_SERVER가 모두 SHA256을 사용해서 유효합니다.

옵션 설정 수정 전 값 수정 후 값

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

SHA256, SHA384, SHA512

변경 사항이 없습니다

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

SHA256, SHA384, SHA512, SHA1, MD5

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_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT는 일치하는 보안 암호화 방법이 하나 있습니다. DES, 3DES 또는 RC4가 아닌 경우 방법이 안전한 것으로 간주됩니다(모든 키 길이).

  • SQLNET.CHECKSUM_TYPES_SERVERSQLNET.CHECKSUM_TYPES_CLIENT는 일치하는 보안 체크섬 방법이 하나 있습니다. MD5가 아닌 경우 방법은 안전한 것으로 간주됩니다.

  • 클라이언트는 2021년 7월 PSU로 패치됩니다. 클라이언트가 패치되지 않은 경우 클라이언트는 연결을 끊고ORA-12269 오류를 받습니다.

다음 예는 NNE 설정 샘플을 보여줍니다. SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENT를 FALSE로 설정하려는 경우 비보안 연결을 차단합니다. 체크섬 옵션 설정은 두 가지 모두 SHA256을 가지고 있어서 필수 구성 요소를 충족합니다. 그러나 SQLNET.ENCRYPTION_TYPES_CLIENTSQLNET.ENCRYPTION_TYPES_SERVERDES, 3DESRC4 암호화 방법을 사용하여 안전하지 않습니다. 따라서 SQLNET.ALLOW_WEAK_CRYPTO* 옵션이 FALSE로 설정되면 먼저 SQLNET.ENCRYPTION_TYPES_SERVERSQLNET.ENCRYPTION_TYPES_CLIENTAES256과 같은 보안 암호화 방법으로 설정합니다.

옵션 설정

SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT

SHA256, SHA384, SHA512

SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER

SHA1,MD5,SHA256

SQLNET.ENCRYPTION_TYPES_CLIENT

RC4_256, 3DES168, DES40

SQLNET.ENCRYPTION_TYPES_SERVER

RC4_256, 3DES168, DES40

NATIVE_NETWORK_ENCRYPTION 옵션 제거

DB 인스턴스에서 NNE를 제거할 수 있습니다.

DB 인스턴스에서 NATIVE_NETWORK_ENCRYPTION 옵션을 제거하려면 다음 중 하나를 수행합니다.

  • 여러 DB 인스턴스에서 옵션을 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 NATIVE_NETWORK_ENCRYPTION 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. NATIVE_NETWORK_ENCRYPTION 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다. 자세한 내용은 옵션 그룹에서 옵션 제거 단원을 참조하십시오.

  • 단일 DB 인스턴스에서 해당 옵션을 제거하려면 DB 인스턴스를 수정하고 NATIVE_NETWORK_ENCRYPTION 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. NATIVE_NETWORK_ENCRYPTION 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하십시오.