AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 50067
Accepted
Chris Aldrich
Chris Aldrich
Asked: 2013-09-18 07:09:48 +0800 CST2013-09-18 07:09:48 +0800 CST 2013-09-18 07:09:48 +0800 CST

DB2 9.7 LUW - Como DEFINIR SESSION_USER quando sou DBADM, SECADM?

  • 772

Com base em uma pergunta anterior que fiz , estou tentando trabalhar em uma solução conforme recomendado pela resposta de mustaccio, na qual tenho outro ID para criar meus objetos DDL.

Eu tenho tentado seguir um artigo de desenvolvimento do IBM chamado "Segurança do DB2, Parte 8: Doze melhores práticas de segurança do DB2" em minha tentativa de fazê-lo. Percebi que parece que o artigo foi escrito para o DB2 8.2 na época. Atualmente, estou trabalhando no DB2 9.7 fix pack 4 ESE para LUW. Especificamente, estou no AIX. No momento, estou testando como fazer isso em meu sistema local, que é o Windowx XP SP3 e usando o DB2 9.7 fix pack 4 Express-C para LUW.

Eu tenho minha conta de usuário local (que é o proprietário da instância) chamada db2admin neste caso (não em nossos sistemas AIX). Este ID pertence ao grupo DB2ADMNS. Como é diferente da minha conta do Windows, certifico-me de anexar à instância primeiro e, em seguida, criar meu banco de dados para garantir que db2admin seja concedido DBADM, SECADM, DATAACCESS, ACCESSCTRLem meu banco de dados.

db2 attach to DB2 user db2admin using ********
db2 create database SECTEST automatic storage yes on 'C:\' dbpath on 'C:\'
  using codeset UTF-8 territory US collate using system

Depois disso eu me conecto ao sistema como db2admin

db2 connect to sectest user db2admin using ********

Então, para testar as coisas, certifiquei-me de conceder CONNECTe SECADMà minha conta do Windows

db2 grant connect,secadm on database to user myid

E então eu queria configurar minha identidade falsa para criar objetos sob ela. Eu intencionalmente crio esse ID como nove caracteres para ajudar a impedir a conexão com o DB2 a partir da linha de comando, mas ainda o permito por meio de SET SESSION_USER. Para simplificar, chamei meu ID de bobabob97.

Então eu fiz o seguinte:

db2 grant CREATETAB,IMPLICIT_SCHEMA,BINDADD,CREATE_NOT_FENCED_ROUTINE,
  CREATE_EXTERNAL_ROUTINE on database to user bobabob97
db2 grant use of tablespace userspace1 to user bobabob97

Neste ponto, acho que tenho tudo configurado corretamente. Eu explicitamente não concedi bobabob97 CONNECTno banco de dados porque não quero que ninguém consiga se conectar ao banco de dados com este ID.

Portanto, agora tento mudar para esse ID para criar o teste de criação de meus objetos e possuí-los sob um ID genérico.

db2 set session_user=bobabob97

Mas então recebo o seguinte erro:

DB21034E O comando foi processado como uma instrução SQL porque não era um comando válido do Processador de Linha de Comandos. Durante o processamento SQL, retornou: SQL0552N "DB2ADMIN" não possui privilégio para executar a operação "SET SESSION AUTHORIZATION". SQLSTATE=28000

Então, agora estou intrigado. O ID que estou atualmente conectado ao banco de dados como (db2admin) tem DBADM, SECADM, DATAACCESS,e ACCESSCTRLno banco de dados (e é claro que contém implicitamente CONNECT, CREATETAB, BINDADD, QUIESCE_CONNECT, IMPLICIT_SCHEMA, LOAD, CREATE_NOT_FENCED_ROUTINE, e CREATE_EXTERNAL_ROUTINE). Eu sou essencialmente "deus" no banco de dados. Por que não posso mudar para este ID?

Tentei brincar com GRANT SETSESSIONUSER, mas sei SECADMque não pode conceder a si mesmo. O que eu faço aqui?

db2 security
  • 1 1 respostas
  • 4130 Views

1 respostas

  • Voted
  1. Best Answer
    Chris Aldrich
    2013-09-18T07:23:47+08:002013-09-18T07:23:47+08:00

    Ok, acho que realmente descobri como lidar com isso. Eu precisava conceder ao meu DBADM, SECADMa capacidade de transferir para qualquer ID por meio do grupo, não para o ID específico. Desta forma contorno as SECADMrestrições.

    db2 grant setsessionuser on public to group DB2ADMNS
    

    Como meu ID db2admin está neste grupo, agora ele pode alternar para qualquer ID (a parte pública). Se eu quisesse apenas mudar para esse ID, poderia ter usado:

    db2 grant setsessionuser on user bobabob97 to group DB2ADMNS
    

    Então agora eu posso executar

    db2 set session_user=bobabob97
    

    e funciona.

    Para voltar só preciso correr

    db2 set session_user=system_user
    
    • 1

relate perguntas

  • Segurança para desenvolvedores de aplicativos que trabalham com PL/SQL no Oracle

  • credenciais de login diferentes com base no usuário

  • O que significa HSJOIN em um plano de explicação?

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Protegendo senhas de banco de dados

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve