2011년 11월 30일 수요일

DB2 권한과 특권

DB2 권한

http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/c0005524.htm

각 데이터베이스 권한은 이를 보유하는 권한 부여 ID가 데이터베이스 전체에서 일부 특정 유형의 조치를 수행할 수 있게 합니다. 데이터베이스 권한은 특권과는 다릅니다. 특권은 테이블 또는 인덱스와 같은 특정 데이터베이스 오브젝트에서만 특정 조치를 취할 수 있습니다. 10가지의 데이터베이스 권한이 있습니다.
DBADM
보유자에게 데이터베이스 관리자 역할을 할 수 있는 권한을 부여합니다. 특히 보유자에게 SECADM을 제외한 다른 모든 데이터베이스 권한을 부여합니다.

db2 connect to CCM 
db2 grant dbadm on database to user db2admin 
db2 disconnect CCM
CONNECT
보유자가 데이터베이스에 연결할 수 있게 합니다.
SECADM
보유자에게 데이터베이스 보안과 관련된 많은 것들을 구성하고 데이터베이스 오브젝트의 소유권을 전환할 수 있는 능력을 줍니다. 예를 들어, SECADM 권한을 가진 사용자는 레이블 기준 액세스 제어(LBAC) 기능의 일부인 모든 오브젝트를 작성, 삭제, 권한 부여 또는 권한 취소할 수 있습니다. SECADM 특정 기능은 SYSADM를 포함한 어떤 기타 권한으로도 실행할 수 없습니다.
BINDADD
보유자가 데이터베이스의 새 패키지를 작성할 수 있게 합니다.
CREATETAB
보유자가 데이터베이스에 새 테이블을 작성할 수 있게 합니다.
CREATE_EXTERNAL_ROUTINE
보유자가 응용프로그램 및 기타 데이터베이스 사용자가 사용할 프로시저를 작성할 수 있게 합니다.
CREATE_NOT_FENCED_ROUTINE
보유자가 『비분리』 UDF(User-Defined Function) 또는 프로시저를 작성할 수 있게 합니다. CREATE_EXTERNAL_ROUTINE은 CREATE_NOT_FENCED_ROUTINE이 부여된 모든 사용자에게 자동으로 부여됩니다.
주의::
데이터베이스 관리 프로그램은 『비분리』 프로시저 또는 UDF로부터 스토리지 또는 제어 블록을 보호하지 못합니다. 이 권한을 가진 사용자는 UDF를 『비분리』로 등록하기 전에 세심하게 테스트해야 합니다.
IMPLICIT_SCHEMA
모든 사용자가 아직 존재하지 않는 스키마 이름을 가진 CREATE문을 사용하여 오브젝트를 작성함으로써 내재적으로 스키마를 작성할 수 있게 합니다. SYSIBM은 내재적으로 작성된 스키마의 소유자가 되며, PUBLIC에는 이 스키마에서 오브젝트를 작성할 특권이 부여됩니다.
LOAD
보유자가 데이터를 테이블로 로드할 수 있게 합니다.
QUIESCE_CONNECT
보유자가 Quiesce 상태에서 데이터베이스에 액세스할 수 있게 합니다.
SYSADM 권한을 가진 권한 부여 ID만이 SECADM 및 DBADM 권한을 부여할 수 있습니다. 모든 기타 권한은 SYSADM 또는 DBADM 권한을 가진 권한 부여 ID를 사용하여 부여할 수 있습니다.
데이터베이스를 작성할 때, 새 데이터베이스에 대해 다음과 같은 데이터베이스 권한이 자동으로 PUBLIC에 부여됩니다.
  • CREATETAB
  • BINDADD
  • CONNECT
  • IMPLICIT_SCHEMA
또한 다음 특권도 부여됩니다.
  • USERSPACE1 테이블 스페이스에서의 USE 특권
  • 시스템 카탈로그 뷰에 대한 SELECT 특권
PUBLIC에서 데이터베이스 권한을 제거하려면, DBADM 또는 SYSADM 권한을 가진 권한 부여 ID가 명시적으로 이를 취소해야 합니다.
관련 태스크

DB2 특권

DB2에서의 Security는 권한과 특권으로 분리가 되며, 각 Object에 관한 특권은 SYSCAT.DBAUTH, SYSCAT.TABAUTH, SYSCAT.TABLESPACEAUTH와 같이 AUTH로 끝나는 SYSCAT VIEW에서 조회할 수 있다.
예를 들어 DBADM 유저는 SYSCAT.DBAUTH 카탈로그 뷰에서 검색할 수 있다.

SELECT DISTINCT GRANTEE, GRANTEETYPE
FROM SYSCAT.DBAUTH
WHERE DBADMAUTH = 'Y'


SELECT distinct GRANTEE, GRANTEETYPE, TABSCHEMA
FROM SYSCAT.TABAUTH ;

댓글 없음:

댓글 쓰기