Implementazione della multi-tenancy

Opzioni di distribuzione: Netezza Performance Server per Cloud Pak for Data System

Imparare a implementare la multi-tenancy su Netezza Performance Server 11.2.1.1 e versioni successive utilizzando la rete esterna e l'isolamento delle risorse degli utenti.

1. Separazione di una rete esterna.

La separazione delle reti potrebbe richiedere meno di 2 ore.

Impostazione del collegamento esterno
IBM Cloud Pak for Data System supporta la connessione a più reti esterne utilizzando porte uplink di fabric switch dedicate. Per connettersi con successo a più reti esterne, è necessario:
  1. Collegare le porte supplementari.

    Su ogni switch fabric, le porte 45-48 sono dedicate agli uplink della rete del cliente.

  2. Configurare LACP.
  3. Contattare l'assistenza IBM per aggiornare il file yml della configurazione di rete di IBM Cloud Pak for Data System e applicare la nuova configurazione.
    Per completare questo passaggio, è necessario fornire le seguenti informazioni all'assistenza IBM :
    1. Numeri delle porte dello switch di tessuto IBM Cloud Pak for Data System, che sono state cablate per la connessione aggiuntiva: il tipo di porta configurato sulle porte dello switch del cliente rivolte verso BM Cloud Pak for Data System (trunk o accesso); numero di VLAN per una porta trunk.
    2. L'IP flottante, l'IP gateway e la netmask che si desidera utilizzare sull'interfaccia di rete aggiuntiva.

    Un esempio di configurazione di rete yml con due reti esterne con porte di accesso sul lato cliente:

    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>
    
Isolamento a livello di connessione

Dopo essersi collegati a più reti esterne, è possibile isolare un database corrispondente.

Il comando SET CONNECTION definisce i record di accesso all'host per i client Netezza rispetto a uno o più database.
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. Segregazione dei database.

Le modifiche allo schema possono essere completate in meno di un'ora.

  1. Creare database per diversi inquilini:
    MYDB.SCH1 (USER)=> CREATE DATABASE dev_db with COLLECT HISTORY ON;
    MYDB.SCH1 (USER)=> CREATE DATABASE qa_db with COLLECT HISTORY ON;
  2. Impostare disable_crossdb_write su ON in postgressql.conf. Per ulteriori informazioni, consultare le istruzioni.

3. Creare un gruppo di risorse utente.

Le modifiche alle ACL potrebbero richiedere meno di un'ora per essere completate.

Il modello di sicurezza Netezza è una combinazione di:
  • Privilegi di amministratore concessi agli utenti o ai gruppi.
  • Privilegi degli oggetti che sono associati a oggetti specifici (ad esempio, la tabella xyz).
  • Classi di oggetti (ad esempio, tutte le tabelle).
Con Netezza, è possibile creare un gruppo di risorse e specificare l'allocazione di risorse minime e massime. Ogni membro di un gruppo di risorse ne eredita i privilegi.

Per ottenere la multi-tenancy, è possibile avere due gruppi di risorse. Ad esempio, development_group e qa_group.

Ogni gruppo di risorse può avere più utenti al suo interno. Per semplicità, concedere al gruppo tutti i privilegi di amministratore e di oggetto. È possibile concedere i privilegi secondo le necessità.

Per ulteriori informazioni, vedere Modello di sicurezza Netezza.

Un gruppo di risorse è un gruppo speciale con una percentuale minima di risorse non nulla. Ogni gruppo di risorse deve avere RESOURCE MINIMUM e RESOURCE MAXIMUM allocati, come specificato per l'allocazione necessaria. Per ulteriori informazioni, Risorse minime e massime.

Procedura

  1. Creare i gruppi development_group e qa_group con i gruppi RESOURCE MINIMUM e 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. Concedere i seguenti privilegi a development_group e qa_group :
    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. Creare gli utenti e aggiungerli ai rispettivi gruppi:
    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. Aggiungere gli utenti ai gruppi:
    MYDB.SCH1(USER)=> ALTER USER Smith in group qa_group in resourcegroup qa_group;