DBMS_CLOUD für Zugriffsverwaltung

In diesem Abschnitt werden die DBMS_CLOUD-Unterprogramme beschrieben, die für die Zugriffsverwaltung verwendet werden.

Voraussetzungen

Als Entwickler können Sie DBMS_CLOUD-Prozeduren mit Autonomous Databases verwenden, die in Oracle Public Cloud, Multicloud oder Exadata Cloud@Customer bereitgestellt sind.

Je nach Deployment-Auswahl müssen die folgenden Voraussetzungen erfüllt sein, um die DBMS_CLOUD-Prozeduren mit den Serviceprovidern Amazon S3, Azure Blob Storage und Google Cloud Storage zu verwenden.

Eine ausgehende Konnektivität muss von Ihrem Flottenadministrator mit einem NAT-Gateway konfiguriert worden sein, wie unten beschrieben:
  • Erstellen Sie ein NAT-Gateway im virtuellen Cloud-Netzwerk (VCN), in dem sich Ihre Autonomous Database-Ressourcen befinden, indem Sie die Anweisungen unter NAT-Gateway erstellen in der Oracle Cloud Infrastructure-Dokumentation befolgen.
  • Nachdem Sie das NAT-Gateway erstellt haben, fügen Sie eine Routingregel und eine Egress-Sicherheitsregel zu jedem Subnetz (im VCN) hinzu, in dem sich Autonomous Database-Ressourcen befinden. So können diese Ressourcen mit dem Gateway einen Public Key aus Ihrer Azure AD-Instanz abrufen:
    1. Gehen Sie zur Seite Subnetzdetails für das Subnetz.
    2. Klicken Sie auf der Registerkarte Informationen zum Subnetz auf den Namen der Routentabelle des Subnetzes, um die Seite Routentabellendetails anzuzeigen.
    3. Prüfen Sie in der Tabelle der vorhandenen Routingregeln, ob bereits eine Regel mit den folgenden Eigenschaften vorhanden ist:
      • Zielort: 0.0.0.0/0
      • Zieltyp: NAT-Gateway
      • Ziel: Der Name des NAT-Gateway, das Sie gerade im VCN erstellt haben

      Wenn keine solche Regel vorhanden ist, klicken Sie auf Routenregeln hinzufügen, und fügen Sie eine Routingregel mit diesen Eigenschaften hinzu.

    4. Zurück zur Seite Subnetzdetails für das Subnetz.
    5. Klicken Sie in der Tabelle Sicherheitslisten des Subnetzes auf den Namen der Sicherheitsliste des Subnetzes, um die Seite Sicherheitslistendetails anzuzeigen.
    6. Klicken Sie im Seitenmenü unter Ressourcen auf Egress-Regeln.
    7. Prüfen Sie in der Tabelle der vorhandenen Ausgangsregeln, ob bereits eine Regel mit den folgenden Eigenschaften vorhanden ist:
      • Zieltyp: CIDR
      • Zielort: 0.0.0.0/0
      • IP-Protokoll: TCP
      • Quellportbereich: 443
      • Ziel-Portbereich: Alle

      Wenn keine derartige Regel vorhanden ist, klicken Sie auf Egress-Regeln hinzufügen, und fügen Sie eine Egress-Regel mit diesen Eigenschaften hinzu.

Die HTTP-Proxyeinstellungen in Ihrer Umgebung müssen es der Datenbank ermöglichen, auf den Cloud-Serviceprovider zuzugreifen.

Diese Einstellungen werden vom Flottenadministrator beim Erstellen der Exadata Cloud@Customer-Infrastruktur definiert, wie unter Exadata Database Service on Cloud@Customer mit der Konsole bereitstellen beschrieben.

Hinweis:

Die Netzwerkkonfiguration einschließlich des HTTP-Proxys kann nur bearbeitet werden, bis sich die Exadata-Infrastruktur im Status Aktivierung erforderlich befindet. Sobald sie aktiviert ist, können Sie diese Einstellungen nicht mehr bearbeiten.

Für die Einrichtung eines HTTP-Proxys für eine bereits bereitgestellte Exadata-Infrastruktur ist eine Serviceanfrage (SR) in My Oracle Support erforderlich. Weitere Informationen finden Sie unter Serviceanfrage in My Oracle Support erstellen.

DBMS_CLOUD Unterprogramme für Zugriffsverwaltung

Die Unterprogramme für die Zugangsdatenverwaltung im Package DBMS_CLOUD, einschließlich Erstellen, Löschen und Aktualisieren von Zugangsdaten.

Unterprogramm Beschreibung

Prozedur CREATE_CREDENTIAL

Diese Prozedur speichert Zugangsdaten für Cloud-Services in Autonomous Database.

Prozedur DROP_CREDENTIAL

Diese Prozedur entfernt vorhandene Zugangsdaten aus Autonomous Database.

Prozedur UPDATE_CREDENTIAL

Diese Prozedur aktualisiert Zugangsdatenattribute für Cloud-Services in Autonomous Database.

Prozedur CREATE_CREDENTIAL

Diese Prozedur speichert Zugangsdaten für Cloud-Services in Autonomous Database.

Verwenden Sie gespeicherte Zugangsdaten für den Zugriff auf den Cloud-Service zum Laden von Daten, zum Abfragen externer Daten in der Cloud oder für andere Fälle, wenn Sie die Prozedur DBMS_CLOUD mit dem Parameter credential_name verwenden.

Syntax

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);


Parameter

Parameter Beschreibung

credential_name

Der Name der zu speichernden Zugangsdaten. Der Parameter credential_name muss den Oracle-Konventionen für Objektnamen entsprechen, die keine Leerzeichen oder Bindestriche zulassen.

username

Mit den Argumenten username und password werden Ihre Zugangsdaten für Cloud-Services angegeben. Die Angaben für username und password für verschiedene Cloud-Services finden Sie in den Hinweisen zur Verwendung.

password

Mit den Argumenten username und password werden Ihre Zugangsdaten für Cloud-Services angegeben.

user_ocid

Gibt die OCID des Benutzers an. Weitere Einzelheiten zum Abrufen der OCID des Benutzers finden Sie unter Hier erhalten Sie die OCID des Mandanten und des Benutzers.

tenancy_ocid

Gibt die OCID des Mandanten an. Weitere Einzelheiten zum Abrufen der OCID des Mandanten finden Sie unter Hier erhalten Sie die OCID des Mandanten und des Benutzers.

private_key

Gibt den generierten Private Key an. Mit einer Passphrase generierte Private Keys werden nicht unterstützt. Sie müssen den Private Key ohne Passphrase generieren. Weitere Einzelheiten zum Generieren eines Schlüsselpaares im PEM-Format finden Sie unter So generieren Sie einen API-Signaturschlüssel.

fingerprint

Gibt einen Fingerprint an. Nachdem ein generierter Public Key in den Account des Benutzers hochgeladen wurde, wird der Fingerprint in der Konsole angezeigt. Verwenden Sie den angezeigten Fingerprint für dieses Argument. Weitere Einzelheiten finden Sie unter So rufen Sie den Fingerprint des Schlüssels ab und So generieren Sie einen API-Signaturschlüssel.

Verwendungshinweise

  • Dieser Vorgang speichert die Zugangsdaten in einem verschlüsselten Format in der Datenbank.

  • Sie können die Zugangsdaten in Ihrem Schema anzeigen, indem Sie die Tabelle user_credentials abfragen.

  • Der ADMIN-Benutzer kann alle Zugangsdaten anzeigen, indem er die Tabelle dba_credentials abfragt.

  • Sie müssen Zugangsdaten nur einmal erstellen, es sei denn, Ihre Zugangsdaten für den Cloud-Service ändern sich. Nachdem Sie die Zugangsdaten gespeichert haben, können Sie denselben Zugangsdatennamen für DBMS_CLOUD-Prozeduren verwenden, für die ein credential_name-Parameter erforderlich ist.

  • Diese Prozedur ist überladen. Wenn Sie eines der schlüsselbasierten Authentifizierungsattribute user_ocid, tenancy_ocid, private_key oder fingerprint angeben, wird davon ausgegangen, dass der Aufruf auf einem Oracle Cloud Infrastructure-Signaturschlüssel basierende Zugangsdaten verwendet.

  • Sie können Zugangsdaten in der View ALL_CREDENTIALS auflisten. Beispiel: Führen Sie den folgenden Befehl aus, um Zugangsdaten anzuzeigen:

    SELECT credential_name, username, comments FROM all_credentials;

Oracle Cloud Infrastructure-Zugangsdaten (Authentifizierungstoken)

In Oracle Cloud Infrastructure ist username Ihr Oracle Cloud Infrastructure-Benutzername. password ist Ihr Oracle Cloud Infrastructure-Authentifizierungstoken. Siehe Mit Authentifizierungstoken arbeiten.

Beispiel:

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

Verwenden Sie Authentifizierungstoken-basierte Zugangsdaten, wenn Sie Aufrufe von OCI Object Storage authentifizieren. Verwenden Sie für Aufrufe von anderen Typen von Oracle Cloud Infrastructure-Cloud-Services auf Basis von Oracle Cloud Infrastructure-Signaturschlüsselzugangsdaten.

Auf Oracle Cloud Infrastructure-Signaturschlüssel basierende Zugangsdaten

Verwenden Sie Oracle Cloud Infrastructure-Signaturschlüsselparameter wie user_ocid, tenancy_ocid, private_key und fingerprint mit der Oracle Cloud Infrastructure-Signaturschlüsselauthentifizierung.

Beispiel:

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;
/

Mit einer Passphrase generierte Private Keys werden nicht unterstützt. Sie müssen den Private Key ohne Passphrase generieren. Weitere Informationen finden Sie unter So generieren Sie einen API-Signaturschlüssel.

Zugangsdaten für Amazon Web Services (AWS)

Wenn sich Ihre Quelldateien in Amazon S3 befinden oder Sie eine AWS-API aufrufen, ist username die AWS-Zugriffsschlüssel-ID und password der AWS-Secret-Zugriffsschlüssel. Siehe AWS Identity and Access Management.

Microsoft Azure-Zugangsdaten

Wenn sich Ihre Quelldateien in Azure Blob Storage befinden oder Sie eine Azure-API aufrufen, ist username der Name Ihres Azure-Speicheraccounts und password ein Zugriffsschlüssel für den Azure-Speicheraccount. Siehe Azure-Speicheraccounts.

Amazon S3-kompatible Zugangsdaten

Service Zugangsdateninformationen

Google Cloud Storage

Wenn sich Ihre Quelldateien in Google Cloud Storage befinden oder Sie Google Cloud Storage-APIs aufrufen, müssen Sie ein Google-Standardprojekt festlegen und einen HMAC-Schlüssel abrufen, um Zugangsdaten für die Angabe mit S3-kompatiblen Google Cloud Storage-URLs zu erstellen. Verwenden Sie die HMAC-Schlüssel-ID als Benutzernamen und das HMAC-Secret als Kennwort.

Weitere Informationen finden Sie unter Projekte und HMAC-Schlüssel.

Prozedur DROP_CREDENTIAL

Diese Prozedur entfernt vorhandene Zugangsdaten aus Autonomous Database.

Syntax

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parameter

Parameter Beschreibung

credential_name

Der Name der zu entfernenden Zugangsdaten.

Prozedur UPDATE_CREDENTIAL

Diese Prozedur aktualisiert ein Attribut mit einem neuen Wert für einen angegebenen credential_name.

Verwenden Sie gespeicherte Zugangsdaten zum Laden von Daten, zum Abfragen externer Daten in der Cloud oder überall, wo Sie DBMS_CLOUD-Prozeduren mit einem credential_name-Parameter verwenden.

Syntax

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

Parameter

Parameter Beschreibung

credential_name

Der Name der zu aktualisierenden Zugangsdaten.

attribute

Name des zu aktualisierenden Attributs.

Für Zugangsdaten vom Typ "Benutzername"/"Kennwort" sind die gültigen attribute-Werte USERNAME und PASSWORD.

Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

value

Neuer Wert für das angegebene Attribut.

Verwendungshinweise

  • Beim Wert für den Benutzernamen muss die Groß- und Kleinschreibung berücksichtigt werden. Er darf keine doppelten Anführungszeichen oder Leerzeichen enthalten.

  • Der ADMIN-Benutzer kann alle Zugangsdaten anzeigen, indem er dba_credentials abfragt.

  • Sie müssen Zugangsdaten nur einmal erstellen, es sei denn, Ihre Zugangsdaten für den Cloud-Service ändern sich. Nachdem Sie die Zugangsdaten gespeichert haben, können Sie denselben Zugangsdatennamen für DBMS_CLOUD-Prozeduren verwenden, für die ein credential_name-Parameter erforderlich ist.

  • Sie können Zugangsdaten in der View ALL_CREDENTIALS auflisten. Beispiel: Führen Sie den folgenden Befehl aus, um Zugangsdaten anzuzeigen:

    SELECT credential_name, username, comments FROM all_credentials;

Beispiele

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;
/