Implementierung der Mehrmandantenfähigkeit

Bereitstellungsoptionen: Netezza Performance Server für Cloud Pak for Data System

Erfahren Sie, wie Sie Multi-Tenancy auf Netezza Performance Server 11.2.1.1 und niedriger implementieren können, indem Sie externe Netzwerk- und Benutzerressourcen isolieren.

1. Trennen eines externen Netzes.

Die Trennung von Netzen kann weniger als 2 Stunden in Anspruch nehmen.

Aufbau einer externen Verbindung
IBM Cloud Pak for Data System unterstützt die Verbindung zu mehreren externen Netzwerken durch die Verwendung dedizierter Fabric Switch Uplink-Ports. Um eine erfolgreiche Verbindung zu mehreren externen Netzwerken herzustellen, müssen Sie:
  1. Verkabeln Sie die zusätzlichen Anschlüsse.

    An jedem Fabric-Switch sind die Ports 45-48 für Uplinks zum Kundennetzwerk vorgesehen.

  2. Konfigurieren Sie LACP.
  3. Wenden Sie sich an den IBM Support, um die IBM Cloud Pak for Data System yml zu aktualisieren und die neue Konfiguration anzuwenden.
    Um diesen Schritt abzuschließen, müssen Sie dem IBM Support die folgenden Informationen geben:
    1. Nummern der IBM Cloud Pak for Data System Fabric-Switch-Ports, die für die zusätzliche Verbindung verkabelt wurden: der Porttyp, der auf den BM Cloud Pak for Data System gegenüberliegenden Kunden-Switch-Ports konfiguriert wurde (Trunk und oder Access); VLAN-Nummer für einen Trunk-Port.
    2. Die Floating-IP, Gateway-IP und Netzmaske, die Sie auf der zusätzlichen Fabric-Schnittstelle verwenden möchten.

    Eine Beispielnetzkonfigurationsdatei yml mit zwei externen Netzen mit Zugangsports auf der Kundenseite:

    all:
      children:
        [...]
        switches:
          hosts:
            FabSw1a:
              ansible_host: localhost
              external_connection_enabled: True
              external_connection_config:
                external_link1:
                  switch_ports: ['45']
                  port_config:
                    mtu: 9000
                    link_speed: 10000
                  vlans: ['4080']
                  strict_vlan: false
                  name: h0
                  lacp_link: True
                  lacp_rate: Fast
                  clag_id: 100
                  partner_switch: 'Fabsw1b'
                external_link2:
                  switch_ports: ['46']
                  port_config:
                    mtu: 9000
                    link_speed: 10000
                  vlans: ['4081']
                  strict_vlan: false
                  name: h1
                  lacp_link: True
                  lacp_rate: Fast
                  clag_id: 101
                  partner_switch: 'Fabsw1b'
    
      vars:
        [...]
        application_network_enabled: True
        application_network:
          network1:
            default_gateway: true
            vlan: 4080
            # just number, no slash
            prefix: 24
            gateway: 192.168.10.1
            floating_ip: 192.168.10.10
            mtu: <OPTIONAL>
            custom_routes: <OPTIONAL>
          network2:
            default_gateway: false
            vlan: 4081
            # just number, no slash
            prefix: 24
            gateway: 192.168.20.1
            floating_ip: 192.168.20.10
            mtu: <OPTIONAL>
            custom_routes: <OPTIONAL>
    
Isolation auf Verbindungsebene

Nachdem Sie sich mit mehreren externen Netzwerken verbunden haben, können Sie eine entsprechende Datenbank isolieren.

Der Befehl SET CONNECTION definiert Host-Zugriffsdatensätze für Netezza auf eine oder mehrere Datenbanken.
SET CONNECTION HOSTSSL DATABASE dev_db IPADDR ‘192.168.10.0’ IPMASK ‘255.255.255.0’
SET CONNECTION HOSTSSL DATABASE qa_db IPADDR ‘192.168.20.0’ IPMASK ‘255.255.255.0’

2. Trennen von Datenbanken.

Schemaänderungen können in weniger als 1 Stunde abgeschlossen sein.

  1. Erstellen Sie Datenbanken für verschiedene Mieter:
    MYDB.SCH1 (USER)=> CREATE DATABASE dev_db with COLLECT HISTORY ON;
    MYDB.SCH1 (USER)=> CREATE DATABASE qa_db with COLLECT HISTORY ON;
  2. Setzen Sie disable_crossdb_write auf ON in postgressql.conf. Weitere Informationen finden Sie in der Anleitung.

3. Erstellen einer Benutzerressourcengruppe.

ACL-Änderungen können weniger als 1 Stunde in Anspruch nehmen.

Das Netezza ist eine Kombination aus:
  • Administratorrechte, die Benutzern und/oder Gruppen gewährt werden.
  • Objektprivilegien, die mit bestimmten Objekten verbunden sind (z. B. Tabelle xyz).
  • Klassen von Objekten (z. B. alle Tabellen).
Mit Netezza können Sie eine Ressourcengruppe erstellen und die Zuweisung von Mindest- und Maximalressourcen festlegen. Jedes Mitglied einer Ressourcengruppe erbt deren Berechtigungen.

Um Mandantenfähigkeit zu erreichen, können Sie zwei Ressourcengruppen haben. Beispiel: development_group und qa_group.

Jede Ressourcengruppe kann mehrere Benutzer enthalten. Der Einfachheit halber sollten Sie der Gruppe alle Admin- und Objektrechte gewähren. Sie können nach Bedarf Privilegien vergeben.

Weitere Informationen finden Sie unter Netezza.

Eine Ressourcengruppe ist eine spezielle Gruppe mit einem Mindestprozentsatz an Ressourcen, der nicht Null ist. Jeder Ressourcengruppe müssen RESOURCE MINIMUM und RESOURCE MAXIMUM zugewiesen werden, wie für die benötigte Zuweisung angegeben. Weitere Informationen finden Sie unter Mindest- und Höchstbeträge für Ressourcen.

Vorgehensweise

  1. Erstellen Sie die Gruppen development_group und qa_group mit RESOURCE MINIMUM und RESOURCE MAXIMUM
    MYDB.SCH1(USER)=> CREATE GROUP development_group with RESOURCE MINIMUM 60 RESOURCE MAXIMUM 100;
    MYDB.SCH1(USER)=> CREATE GROUP qa_group with RESOURCE MINIMUM 40 RESOURCE MAXIMUM 100;
  2. Gewähren Sie development_group und qa_group die folgenden Berechtigungen:
    MYDB.SCH1(USER)=> GRANT ALL ADMIN IN dev_db.ALL to group development_group;
    MYDB.SCH1(USER)=> GRANT ALL ADMIN IN qa_db.ALL to group qa_group;
    MYDB.SCH1(USER)=> GRANT ALL on dev_db to group development_group;
    MYDB.SCH1(USER)=> GRANT ALL on qa_db to group qa_group;
  3. Erstellen Sie Benutzer und fügen Sie sie zu ihren jeweiligen Gruppen hinzu:
    MYDB.SCH1(USER)=> CREATE USER John with password 'abc123' in group development_group in resourcegroup development_group;
    MYDB.SCH1(USER)=> CREATE USER Bob with password '3566' in group qa_group in resourcegroup qa_group;
  4. Benutzer zu Gruppen hinzufügen:
    MYDB.SCH1(USER)=> ALTER USER Smith in group qa_group in resourcegroup qa_group;