Kerberos로 Autonomous Database 사용자 인증

Kerberos 네트워크 인증 프로토콜을 사용하여 데이터베이스 사용자를 인증하도록 Autonomous Database on Dedicated Exadata Infrastructure를 구성할 수 있습니다. Kerberos는 강력한 네트워크 인증 프로토콜입니다. 암호 키 암호화를 사용하여 사용자 대 서버 인증을 제공하여 강력한 인증을 가능하게 합니다.

  • Kerberos에 대한 Autonomous Database on Dedicated Exadata Infrastructure 지원은 Oracle 사용자의 Single Sign-On 및 중앙 집중식 인증의 이점을 제공합니다. Kerberos는 공유 보안을 기반으로 하는 신뢰할 수 있는 타사 인증 시스템입니다. 타사에서 보안이 유지되고 Single Sign-On 기능, 중앙 집중식 암호 저장, 데이터베이스 링크 인증 및 향상된 PC 보안을 제공하는 것으로 가정합니다. Kerberos 인증 서버를 통해 이 작업을 수행합니다.

  • Kerberos 시스템은 티켓 개념을 중심으로 회전합니다. 티켓은 사용자나 서비스를 식별하는 전자 정보 세트입니다. 티켓은 사용자와 사용자의 네트워크 액세스 권한을 식별합니다.

  • Kerberos 기반 인증에서는 티켓 요청을 투명하게 KDC(키 배포 센터)로 보냅니다. Key Distribution Center에서 사용자를 인증하고 데이터베이스에 액세스할 수 있는 티켓을 부여합니다.

Kerberos 인증 시스템의 구성 요소

Kerberos 인증 시스템에 대한 개요를 제공합니다.

  • 영역은 인증 관리 도메인을 설정합니다. 각 영역에는 해당 특정 관리 도메인에 대한 사용자 및 서비스를 포함하는 고유한 Kerberos 데이터베이스가 있습니다.

  • 티켓은 KDC(키 배포 센터)에서 발행합니다. 클라이언트는 ID의 신뢰성을 입증하기 위해 데이터베이스 서버에 티켓을 제공합니다. 각 티켓에는 만료 및 갱신 시간이 있습니다.

  • Keytabs는 하나 이상의 주체에 대한 장기 키를 저장합니다. keytab 파일은 kadmin.local 도구(MIT Key Distribution Center의 경우) 또는 ktpass(Active Directory Key Distribution Center의 경우)를 호출하여 생성됩니다.

  • 주체는 Key Distribution Center 데이터베이스에 있는 항목입니다. 각 사용자, 호스트 또는 서비스에는 주체가 지정됩니다. 주체는 키 배포 센터에서 티켓을 지정할 수 있는 고유 ID입니다.

  • Autonomous Database의 Kerberos 지원은 서비스 주체 이름을 구성하는 다양한 구성요소에 다음 값을 사용합니다.

서비스 원금 구성요소 Autonomous Database의 가치
kinstance

이 값은 V$PDBSCLOUD_IDENTITY 열에 있는 PUBLIC_DOMAIN_NAME 속성에서 가져올 수 있습니다. 이 값은 프라이빗 끝점의 데이터베이스에 대한 FQDN(정규화된 도메인 이름)과 다릅니다.

다음 질의를 사용하여 kinstance을 가져옵니다.

SELECT json_value(cloud_identity, '$.PUBLIC_DOMAIN_NAME') "KINSTANCE" FROM v$pdbs;

주:

TNS 접속 문자열에서 발견된 host 매개변수의 값이 됩니다.
kservice

Autonomous Database에는 kservice 값에 대한 두 가지 옵션이 있습니다.

  • 데이터베이스 GUID 사용: DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION에 Kerberos 서비스 이름을 제공하지 않을 경우 사용되는 기본 서비스 이름은 Autonomous Database 인스턴스의 GUID입니다. 이 경우 keytab 파일을 만들 때 GUID를 서비스 이름 값으로 사용합니다.

    기본적으로 Keytab 파일은 GUID(인스턴스별)인 서비스 이름을 사용하기 때문에 기본 서비스 이름을 사용하는 경우 각 Autonomous Database 인스턴스에 대해 서로 다른 Keytab 파일을 생성해야 합니다.

    다음 명령을 사용하여 GUID을 가져옵니다(대소문자 구분).

    SELECT GUID FROM v$pdbs;
  • 사용자 정의 이름 사용: 여러 Autonomous Database 인스턴스에서 동일한 Keytab 파일을 사용하려면 서비스 이름을 설정합니다. 사용자정의 이름을 사용하는 경우 각 Autonomous Database 인스턴스에 대해 서로 다른 Keytab 파일을 생성하고 업로드할 필요가 없습니다. 사용자 정의 이름을 사용하는 경우 params kerberos_service_name 매개변수를 DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION와 함께 지정해야 합니다. 서비스 이름에 GUID를 사용할 때는 이 매개변수를 지정할 필요가 없습니다.

Autonomous Database 인스턴스에서 Kerberos를 사용으로 설정한 후 다음 질의를 사용하여 Kerberos 서비스 이름을 확인합니다.

SELECT SYS_CONTEXT('USERENV', 'KERBEROS_SERVICE_NAME') FROM DUAL;
REALM KDC에서 지원하는 모든 영역입니다. REALM는 항상 대문자여야 합니다.

Autonomous Database에 대해 Kerberos 인증을 사용으로 설정하려면 Kerberos 구성 파일(krb.conf) 및 서비스 키 테이블 파일(v5srvtab)을 준비 상태로 유지해야 합니다. 이러한 파일 및 파일 가져오기 단계에 대한 자세한 내용은 Configuring Kerberos Authentication을 참조하십시오.

Autonomous Database의 Kerberos 인증에 대한 참고 사항

Autonomous Database on Dedicated Exadata Infrastructure에서 Kerberos 인증을 진행하기 전에 다음 참고 사항을 검토하십시오.

  • Autonomous Database에 대해 Kerberos 인증을 사용으로 설정하면 데이터베이스에 대해 비밀번호 기반 데이터베이스 인증을 계속 사용할 수 있습니다.
  • 언제든지 Autonomous Database에 대해 하나의 외부 인증 방법만 사용할 수 있습니다. 즉, Oracle Cloud Infrastructure(IAM), CMU-AD(Centrally Managed User with Active Directory), Azure AD 또는 Kerberos 인증 체계만 언제든지 사용으로 설정할 수 있습니다.

    주:

    단, Microsoft Active Directory 사용자에 대한 CMU-AD Kerberos 인증을 제공하기 위해 CMU-AD를 기반으로 Kerberos 인증을 구성할 수 있습니다.
  • 다음 도구에는 Kerberos 인증이 지원되지 않습니다.
    • Oracle Database API for MongoDB
    • Oracle REST Data Services
    • Oracle Machine Learning
    • APEX
    • Oracle Graph 스튜디오
    • Oracle 데이터베이스 작업
  • Kerberos 인증을 사용으로 설정하여 ADMIN 사용자를 인증할 수 있습니다. Oracle Cloud Infrastructure(OCI) 콘솔에서 비밀번호 재설정 기능을 사용하여 ADMIN 사용자의 비밀번호를 재설정하고, 손상된 keytab 파일로 인해 ADMIN 사용자의 인증이 실패하는 경우 액세스 권한을 다시 얻을 수 있습니다.
  • Kerberos 인증은 Autonomous Database 버전 19.27 이상에 대한 TCP 프로토콜로 지원됩니다.
  • DB_LINKs 및 자율운영 Data Guard가 있는 데이터베이스에서는 Kerberos 인증이 지원되지 않습니다.

Autonomous Database에서 Kerberos 인증 사용

아래 나열된 단계에 따라 전용 Exadata 인프라의 Autonomous Database에 대한 Kerberos 인증을 사용으로 설정합니다.
  • 지정된 시간에 Autonomous Database에 대해 하나의 외부 인증 체계만 사용으로 설정할 수 있으므로 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION 프로시저를 실행하여 데이터베이스에 대해 이미 사용으로 설정된 외부 인증 체계를 사용 안함으로 설정합니다.

    프로시저를 실행하려면 ADMIN 사용자로 로그인하거나 DBMS_CLOUD_ADMIN에 대한 EXECUTE 권한이 있어야 합니다.
    BEGIN
        DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /
  • Kerberos 구성 파일(krb.conf) 및 서비스 키 테이블 파일(v5srvtab)을 가져옵니다. 이러한 파일 및 파일을 가져오는 데 필요한 단계에 대한 자세한 내용은 Oracle Database 19c Security GuideConfiguring Kerberos Authentication 또는 Oracle Database 23ai Security Guide를 참조하십시오.

  • Kerberos 구성 파일 krb.confv5srvtab를 객체 저장소의 버킷에 복사합니다.

    주:

    Oracle은 Kerberos 구성 파일을 객체 저장소의 프라이빗 버킷에 저장할 것을 권장합니다.

    Oracle Cloud Infrastructure Object Store를 사용하는 경우 파일 업로드에 대한 자세한 내용은 Object Storage에 데이터 넣기를 참조하십시오.

  • Kerberos를 Autonomous Database에 대한 외부 인증으로 사용으로 설정하려면 DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION 프로시저를 실행하고 params JSON 인수를 사용하여 위치 URI를 전달합니다. location_uri 매개변수에 지정된 오브젝트 스토리지 위치에 구성 파일 krb.confv5srvtab를 배치해야 합니다.

    예:
    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
            type     => 'KERBEROS',
            params   => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                                   'credential_name' value 'my_credential_name')
        );
    END;
    /

    주:

    Microsoft Active Directory 사용자에 대해 CMU-AD Kerberos 인증을 제공하려면 위 예에서 typeCMU로 설정하여 CMU-AD에서 Kerberos 인증을 사용으로 설정할 수 있습니다.

    이 예에서 namespace-stringOracle Cloud Infrastructure 객체 스토리지 네임스페이스이고 bucketname은 버킷 이름입니다. 자세한 내용은 Understanding Object Storage Namespaces를 참조하십시오.

    이 단계에서 사용하는 credential_name은 객체 저장소에 대한 인증서입니다.

    location_uri가 사전 인증된 URL인 경우 credential_name을 제공할 필요가 없습니다.

    그러면 데이터베이스에 KERBEROS_DIR이라는 디렉토리 객체가 생성되고 인증서가 객체 저장소 위치에서 디렉토리 객체로 Kerberos 구성 파일을 다운로드하는 데 사용됩니다.

    kerberos_service_name 매개변수를 사용하여 Kerberos 서비스 이름을 지정할 수 있습니다. 예:
    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
       type     =>'KERBEROS',
       params   => JSON_OBJECT(
       'location_uri'          value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
       'credential_name'       value 'my_credential_name'
       'kerberos_service_name' value 'oracle' ));
    END;
    /
  • Kerberos 인증을 사용으로 설정한 후 객체 저장소에서 krb.confv5srvtab 구성을 제거합니다. 로컬 객체 저장소 메소드를 사용하여 이러한 파일을 제거하거나 DBMS_CLOUD.DELETE_OBJECT를 사용하여 객체 저장소에서 파일을 삭제할 수 있습니다.

오브젝트 스토리지에 대한 자세한 내용은 Oracle Cloud Infrastructure Object Storage 및 버킷 생성으로 이동을 참조하십시오.

자세한 내용은 ENABLE_EXTERNAL_AUTHENTICATION Procedure를 참조하십시오.

Autonomous Database에서 Kerberos 인증 사용 안함

데이터베이스에서 다른 외부 인증 체계를 사용으로 설정하기 전에 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION 프로시저를 실행하는 Kerberos 인증을 사용 안함으로 설정해야 합니다.

이 프로시저를 실행하려면 ADMIN 사용자로 로그인하거나 DBMS_CLOUD_ADMIN에 대한 EXECUTE 권한이 있어야 합니다.
BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
자세한 내용은 DISABLE_EXTERNAL_AUTHENTICATION Procedure를 참조하십시오.

주:

Microsoft Active Directory 사용자에 대해 CMU-AD Kerberos 인증을 제공하려면 Kerberos 인증을 사용 안함으로 설정하지 않고 CMU-AD 인증을 계속 구성해야 합니다.