액세스 관리를 위한 DBMS_CLOUD

이 절에서는 액세스 관리에 사용되는 DBMS_CLOUD 서브 프로그램을 다룹니다.

필요 조건

개발자는 Oracle Public Cloud, 멀티클라우드 또는 Exadata Cloud@Customer에 배포된 Autonomous Database에서 DBMS_CLOUD 절차를 사용할 수 있습니다.

배포 선택에 따라 Amazon S3, Azure Blob StorageGoogle Cloud Storage 서비스 제공업체와 함께 DBMS_CLOUD 절차를 사용하려면 다음 필요 조건이 충족되어야 합니다.

플리트 관리자가 아래 설명된 대로 NAT 게이트웨이를 사용하여 아웃바운드 접속을 구성해야 합니다.
  • Oracle Cloud Infrastructure 문서NAT 게이트웨이 생성 지침에 따라 Autonomous Database 리소스가 상주하는 VCN(가상 클라우드 네트워크)에서 NAT 게이트웨이를 생성합니다.
  • NAT 게이트웨이를 생성한 후 각 서브넷(VCN 내)에 경로 규칙 및 송신 보안 규칙을 추가합니다. 여기서 Autonomous Database 리소스는 게이트웨이를 사용하여 Azure AD 인스턴스에서 퍼블릭 키를 얻을 수 있습니다.
    1. 서브넷의 서브넷 세부 정보 페이지로 이동합니다.
    2. 서브넷 정보 탭에서 서브넷의 경로 테이블 이름을 눌러 경로 테이블 세부정보 페이지를 표시합니다.
    3. 기존 경로 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
      • 대상: 0.0.0.0/0
      • 대상 유형: NAT 게이트웨이
      • 대상: VCN에서 방금 생성한 NAT 게이트웨이의 이름입니다.

      해당 규칙이 없는 경우 경로 규칙 추가를 누르고 해당 특성을 가진 경로 규칙을 추가합니다.

    4. 서브넷에 대한 서브넷 세부정보 페이지로 돌아갑니다.
    5. 서브넷의 보안 목록 테이블에서 서브넷의 보안 목록 이름을 눌러 해당 보안 목록 세부정보 페이지를 표시합니다.
    6. 사이드 메뉴의 리소스에서 송신 규칙을 누릅니다.
    7. 기존 송신 규칙의 테이블에서 다음 특성을 가진 규칙이 이미 있는지 확인합니다.
      • 대상 유형: CIDR
      • 대상: 0.0.0.0/0
      • IP 프로토콜: TCP
      • 소스 포트 범위: 443
      • 대상 포트 범위: 모두

      해당 규칙이 없으면 Add Egress Rules를 누르고 이러한 특성을 가진 송신 규칙을 추가합니다.

환경의 HTTP 프록시 설정에서 데이터베이스가 클라우드 서비스 공급자에 액세스할 수 있도록 허용해야 합니다.

해당 설정은 콘솔을 사용하여 Cloud@Customer에서 Exadata Database Service 프로비전에 설명된 대로 Exadata Cloud@Customer 인프라를 생성하는 동안 플리트 관리자가 정의합니다.

주:

HTTP 프록시를 포함한 네트워크 구성은 Exadata 인프라가 활성화 필요 상태가 될 때까지만 편집할 수 있습니다. 활성화된 후에는 해당 설정을 편집할 수 없습니다.

이미 프로비전된 Exadata 인프라에 대해 HTTP 프록시를 설정하려면 My Oracle Support에서 SR(서비스 요청)이 필요합니다. 자세한 내용은 My Oracle Support에서 서비스 요청 생성을 참조하십시오.

액세스 관리를 위한 DBMS_CLOUD 하위 프로그램

인증서 생성, 삭제 및 업데이트를 포함하여 DBMS_CLOUD 패키지 내의 인증서 관리를 위한 하위 프로그램입니다.

하위 프로그램 설명

CREATE_CREDENTIAL 프로시저

이 절차에서는 클라우드 서비스 자격 증명을 Autonomous Database에 저장합니다.

DROP_CREDENTIAL 프로시저

이 절차에서는 Autonomous Database에서 기존 인증서를 제거합니다.

UPDATE_CREDENTIAL 프로시저

이 절차에서는 Autonomous Database의 클라우드 서비스 자격 증명 속성을 업데이트합니다.

CREATE_CREDENTIAL 프로시저

이 절차에서는 클라우드 서비스 자격 증명을 Autonomous Database에 저장합니다.

저장된 클라우드 서비스 자격 증명을 사용하여 데이터 로드를 위해 클라우드 서비스에 액세스하거나, 클라우드에 상주하는 외부 데이터를 질의하거나, credential_name 매개변수와 함께 DBMS_CLOUD 프로시저를 사용하는 경우 기타 경우에 액세스합니다.

구문

DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      username          IN VARCHAR2,
      password          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name IN VARCHAR2,
      user_ocid       IN VARCHAR2,
      tenancy_ocid    IN VARCHAR2,
      private_key     IN VARCHAR2,
      fingerprint     IN VARCHAR2);


매개변수

매개변수 설명

credential_name

저장할 인증서의 이름입니다. credential_name 매개변수는 공백이나 하이픈을 허용하지 않는 Oracle 객체 이름 지정 규칙을 준수해야 합니다.

username

usernamepassword 인수는 클라우드 서비스 인증서를 함께 지정합니다. 다양한 클라우드 서비스에 대해 usernamepassword에 대해 지정할 내용은 사용 노트를 참조하십시오.

password

usernamepassword 인수는 클라우드 서비스 인증서를 함께 지정합니다.

user_ocid

사용자의 OCID를 지정합니다. 사용자 OCID를 얻는 방법은 테넌시의 OCID 및 사용자의 OCID를 가져올 위치를 참조하십시오.

tenancy_ocid

테넌시의 OCID를 지정합니다. 테넌시의 OCID를 가져오는 방법은 테넌시의 OCID 및 사용자의 OCID를 가져올 위치를 참조하십시오.

private_key

생성된 프라이빗 키를 지정합니다. 비밀번호 구문으로 생성된 프라이빗 키는 지원되지 않습니다. 문장암호 없이 개인 키를 생성해야 합니다. PEM 형식의 키 쌍 생성에 대한 자세한 내용은 API 서명 키를 생성하는 방법을 참조하십시오.

fingerprint

지문을 지정합니다. 생성된 공개 키가 사용자 계정에 업로드되면 지문이 콘솔에 표시됩니다. 이 인수에 표시된 지문을 사용하십시오. 자세한 내용은 How to Get the Key's FingerprintHow to Generate an API Signing Key을 참조하십시오.

사용법 참고

  • 이 작업은 인증서를 암호화된 형식으로 데이터베이스에 저장합니다.

  • user_credentials 테이블을 query하여 스키마에서 인증서를 볼 수 있습니다.

  • ADMIN 사용자는 dba_credentials 테이블을 질의하여 모든 인증서를 볼 수 있습니다.

  • 클라우드 서비스 인증서가 변경되지 않는 한 인증서를 한 번만 생성하면 됩니다. 자격 증명을 저장한 후에는 credential_name 매개변수가 필요한 DBMS_CLOUD 프로시저에 동일한 자격 증명 이름을 사용할 수 있습니다.

  • 이 프로시저는 오버로드됩니다. 키 기반 인증 속성 user_ocid, tenancy_ocid, private_key 또는 fingerprint 중 하나를 제공하는 경우 호출이 Oracle Cloud Infrastructure 서명 키 기반 인증서로 간주됩니다.

  • ALL_CREDENTIALS 뷰에서 인증서를 나열할 수 있습니다. 예를 들어, 다음 명령을 실행하여 자격 증명을 나열합니다.

    SELECT credential_name, username, comments FROM all_credentials;

Oracle Cloud Infrastructure 인증서(Auth 토큰)

Oracle Cloud Infrastructure의 경우 username은 Oracle Cloud Infrastructure 사용자 이름입니다. password은 Oracle Cloud Infrastructure 인증 토큰입니다. 인증 토큰 작업을 참조하십시오.

예:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'password' );
END;
/

OCI Object Storage에 대한 호출을 인증하는 경우 인증 토큰 기반 인증서를 사용합니다. 다른 유형의 Oracle Cloud Infrastructure 클라우드 서비스에 대한 호출의 경우 Oracle Cloud Infrastructure 서명 키 기반 인증서를 사용합니다.

Oracle Cloud Infrastructure 서명 키 기반 인증서

Oracle Cloud Infrastructure 서명 키 관련 매개변수(user_ocid, tenancy_ocid, private_key, fingerprintOracle Cloud Infrastructure 서명 키 인증 포함)를 사용합니다.

예:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/

비밀번호 구문으로 생성된 프라이빗 키는 지원되지 않습니다. 문장암호 없이 개인 키를 생성해야 합니다. 자세한 내용은 How to Generate an API Signing Key을 참조하십시오.

AWS(Amazon Web Services) 인증서

소스 파일이 Amazon S3에 있거나 AWS API를 호출하는 경우 username는 AWS 액세스 키 ID이고 password은 AWS 보안 액세스 키입니다. AWS Identity and Access Management를 참조하십시오.

Microsoft Azure 인증서

소스 파일이 Azure Blob Storage에 있거나 Azure API를 호출하는 경우 username는 Azure 스토리지 계정 이름이고 password는 Azure 스토리지 계정 액세스 키입니다. Azure 스토리지 계정 정보를 참조하십시오.

Amazon S3 호환 인증서

서비스 인증서 정보

Google Cloud Storage

소스 파일이 Google Cloud Storage에 있거나 Google Cloud Storage API를 호출하는 경우 기본 Google 프로젝트를 설정하고 HMAC 키를 얻어 Google Cloud Storage S3 호환 URL을 제공할 인증서를 생성해야 합니다. HMAC 키 ID를 사용자 이름으로, HMAC 암호를 암호로 사용합니다.

자세한 내용은 ProjectsHMAC Keys를 참조하십시오.

DROP_CREDENTIAL 프로시저

이 절차에서는 Autonomous Database에서 기존 인증서를 제거합니다.

구문

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

매개변수

매개변수 설명

credential_name

제거할 인증서의 이름입니다.

UPDATE_CREDENTIAL 프로시저

이 절차에서는 지정된 credential_name에 대한 새 값으로 속성을 업데이트합니다.

데이터 로드, 클라우드에 상주하는 외부 데이터 질의 또는 DBMS_CLOUD 프로시저를 credential_name 매개변수와 함께 사용하는 모든 위치에서 저장된 인증서를 사용합니다.

구문

DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name   IN VARCHAR2,
    attribute         IN VARCHAR2,
    value             IN VARCHAR2);

매개변수

매개변수 설명

credential_name

업데이트할 인증서의 이름입니다.

attribute

업데이트할 속성의 이름입니다.

사용자 이름/비밀번호 유형 인증서의 경우 적합한 attribute 값은 USERNAMEPASSWORD입니다.

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

value

지정된 속성에 대한 새 값입니다.

사용법 참고

  • 사용자 이름 값은 대소문자를 구분합니다. 큰 따옴표나 공백을 포함할 수 없습니다.

  • ADMIN 사용자는 dba_credentials를 질의하여 모든 인증서를 볼 수 있습니다.

  • 클라우드 서비스 인증서가 변경되지 않는 한 인증서를 한 번만 생성하면 됩니다. 자격 증명을 저장한 후에는 credential_name 매개변수가 필요한 DBMS_CLOUD 프로시저에 동일한 자격 증명 이름을 사용할 수 있습니다.

  • ALL_CREDENTIALS 뷰에서 인증서를 나열할 수 있습니다. 예를 들어, 다음 명령을 실행하여 자격 증명을 나열합니다.

    SELECT credential_name, username, comments FROM all_credentials;

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'OBJ_STORE_CRED',
     attribute => 'PASSWORD',
     value => 'password'); 
END;
/
BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'ARN_CRED',
     attribute => 'aws_role_arn',
     value => 'NEW_AWS_ARN'); 
END;
/