Oracle Proxy Authentication (에이전트 인증)

5780 단어 오 라 클 기반
우선 Oracle 공식 소개 부터 살 펴 보 겠 습 니 다.
Oracle 에이전트 인증 은 응용 프로그램 개발 자 들 이 다 층 시스템 구 조 를 설계 할 때 더 많은 유연성 을 제공 하기 위해 Oracle 8i 에서 처음으로 출시 되 었 다.인터넷 을 바탕 으로 하 는 응용 프로그램의 신축성 수 요 를 만족 시 킬 수 있 기 때문에 다 층 체계 구 조 는 20 세기 90 년대 에 유행 하기 시작 했다.그것들 은 중간 층 과 백 엔 드 데이터 베 이 스 를 포함 하 는 두 개의 구성 요 소 를 포함한다.Oracle 을 바탕 으로 하 는 다 층 시스템 구 조 는 Oracle 융합 미들웨어 와 Oracle 데이터 베 이 스 를 포함한다.현재 많은 응용 프로그램 은 사용 자 를 중간 층 으로 만 인증 하고 중간 층 은 큰 사용자 로 데이터 베 이 스 를 연결 하고 있다.백 엔 드 데이터베이스 가 최종 사용자 의 신분 을 요구 하지 않 는 다 면 이 모델 은 역할 을 할 수 있다.지난 5 년 간 신분 전 파 는 합 법성 과 전체적인 안전 에 있어 점점 중요 해 졌 다.신분 전 파 는 여러 가지 방식 으로 이 루어 질 수 있다.
기 존의 다 층 응용 프로그램 에서 가장 흔히 볼 수 있 는 방법 은 기 존의 단일 사용자 연결 을 통 해 클 라 이언 트 식별 자 를 중간 층 에서 백 엔 드 데이터 베이스 로 전달 하 는 것 이다.클 라 이언 트 식별 자 는 Oracle 데이터베이스 9i 에 도입 되 었 으 며, 응용 프로그램 이 기 존의 뚱뚱 하거나 마른 JDBC 연결 을 통 해 식별 자 를 중간 층 에서 백 엔 드 데이터베이스 로 전달 하도록 하 는 데 목적 을 둔다.Oracle 데이터베이스 감사 가 시작 되면 클 라 이언 트 식별 자 는 Oracle 데이터베이스 감사 단서 에 기 록 됩 니 다.초기 화가 완료 되면 클 라 이언 트 식별 자의 값 은 임의의 SQL 또는 PL / SQL 문 구 를 통 해 데이터베이스 에서 참조 할 수 있 습 니 다.
  STEVE> select sys_context('userenv','client_identifier') from dual;

OCI 를 통 해 CLIENT 를 설정 해 야 합 니 다.IDENTIFIER 속성, OCIAttrSet () 호출 시 OCI 사용ATTR_CLIENT_IDENTIFIER 속성 입 니 다.그리고 다음 에 서버 를 요청 할 때 정 보 는 서버 세 션 에 전파 되 고 저 장 됩 니 다.예 를 들 면:
  OCIAttrSet (session,
  OCI_HTYPE_SESSION,
  (dvoid *) "appuser1",
  (ub4)strlen("appuser1"),
  OCI_ATTR_CLIENT_IDENTIFIER,
  error_handle); /* OCIError *error_handle */

JDBC 를 사용 하 는 응용 프로그램의 경우 연결 탱크 환경 에서 클 라 이언 트 식별 자 는 현재 데이터베이스 세 션 을 사용 하고 있 는 경량급 사용 자 를 식별 하 는 데 사용 할 수 있 습 니 다.JDBC 프로그램 에 CLIENT 를 설정 하려 면IDENTIFIER, 아래 Oacle. jdbc. Oracle Connection 인터페이스 방법 을 사용 합 니 다.
setClientIdentifier():           
clearClientIdentifier():           

더 많은 정 보 를 알 고 싶 으 시 면 Oracle 호출 인터페이스 프로그래머 가이드 와 Oracle 데이터베이스 JDBC 개발 자 가이드 및 참고 매 뉴 얼 을 참고 하 시기 바 랍 니 다.
다른 방법 은 응용 프로그램 이 전통 적 인 에이전트 인증 을 사용 하여 실제 최종 사용자 인증 을 백 엔 드 데이터 베이스 에 검증 한 다음 에 하나의 큰 사용자 로 대리 할 수 있다 는 것 이다.이 방법 은 Oracle 기업 의 사용자 안전성 과 결합 하여 사용 할 수 있다.기업 사용자 의 안전성 을 이용 하여 백 엔 드 데이터 베이스 에서 공유 모델 을 정의 하여 Oracle 데이터 베 이 스 를 최종 사용자 가 필요 로 하 는 데이터 베이스 계 정 수량 을 크게 줄 일 수 있 습 니 다.Oracle 데이터베이스 10g 2 판 이전에 Oracle 에이전트 인증 은 뚱뚱 하거나 마른 JDBC 와 연결 해서 만 사용 할 수 있다.Oracle 데이터베이스 10g 2 판 에서 Oracle 은 명령 행 에이전트 기능 을 도입 했다.
명령 행 프 록 시 기능 은 백 엔 드 서버 에서 대량 작업 을 수행 하고 하나의 큰 사용자 로 연결 하 는 데 특히 유용 합 니 다.
  SYSTEM> grant create session to Steve identified by steve_password;
  SYSTEM> grant create session to sales_app_dba identified
          by sales_app_dba_password;

  SYSTEM> alter user sales_app_dba grant connect through Steve;

  SYSTEM> connect Steve[sales_app_dba]/steve_password;
  
  SALES_APP_DBA>

Steve 의 암 호 는 안전 한 외부 암 호 를 통 해 Oracle 지갑 에 저장 할 수 있 습 니 다.명령 행 에이 전 트 는 안전 한 외부 암호 저장 소 와 함께 사용 할 수 있 으 며, 대량 작업 을 보장 하기 위해 뛰어난 해결 방안 을 제공 합 니 다.
두 번 째 로 Tom Kyte 의 예 시 를 살 펴 보 겠 습 니 다.
설명: 아래 의 예 는 사용자 A 가 사용자 B 의 역할 을 어떻게 하 는 지 보 여 주 며 B 의 비밀 번 호 를 모 르 고 B 사용자 의 대상 을 조작 하고 B 사용자 가 가지 고 있 는 일부 권한 을 사용 할 수 있 습 니 다.Let's do it.
1. 두 사용자 A 와 B 만 들 기:
SYS@orcl> create user a identified by a;

     。

SYS@orcl> grant
  2       create session,
  3       create procedure
  4       to a;

    。

SYS@orcl> create user b identified by b default tablespace users
  2       quota unlimited on users;

     。

SYS@orcl> grant create session, create table, create procedure to b;

    。

2. ALTER USER 문 구 를 통 해 A "become B":
SYS@orcl> alter user b grant connect through a;

     。

SYS@orcl> connect b/b
   。
B@orcl> create
  2     procedure p
  3     as
  4     begin
  5       null;
  6     end;
  7  /

     。

B@orcl> conn a/a
   。
A@orcl> show user
USER   "A"

3. 다음 에 우 리 는 A 를 통 해 B 사용자 로 로그 인하 여 관련 작업 을 수행 합 니 다.
A@orcl> conn a[b]/a
   。
B@orcl> show user
USER   "B"
  1  create or replace
  2     procedure p
  3     as
  4     begin
  5       dbms_output.put_line('new stuff');
  6*    end;
B@orcl> /

     。
B@orcl> create table t2 (x int);

    。

B@orcl> grant execute on p to a;

    。
B@orcl> conn a/a
   。
A@orcl> exec b.p
new stuff

PL/SQL        。

OK.  효과 일목요연!
4. 그러나 이때 저 는 사용자 A 가 B 의 'CREATE TABLE' 권한 을 가지 고 싶 지 않 습 니 다. 어떻게 막 아야 합 니까?OK, 우 리 는 사용자 B 의 "CREATE TABLE" 권한 과 "CREATE SESSION",
"CREATE PROCEDURE" 권한 이 분리 되 어 있 습 니 다. 사용자 B 재 구축 을 통 해 서로 다른 캐릭터 2 개 를 만 듭 니 다. as follows:
A@orcl> conn / as sysdba
   。
SYS@orcl> create role b_role1;

     。

SYS@orcl> create role b_role2;

     。

SYS@orcl> grant
  2       create procedure,
  3       create session
  4       to b_role1;

    。

SYS@orcl> grant
  2       create table
  3       to b_role2;

    。
SYS@orcl> drop user b cascade;

     。
  1  create user b
  2       identified by b
  3       default tablespace users
  4*      quota unlimited on users
SYS@orcl> /

     。
SYS@orcl> grant b_role1 to b;

    。

SYS@orcl> grant b_role2 to b;

    。

SYS@orcl> alter user b
  2       grant connect through a
  3       with role b_role1;

     。

SYS@orcl> conn a[b]/a
   。
B@orcl> show user
USER   "B"
B@orcl> create or replace
  2     procedure p
  3     as
  4     begin
  5       null;
  6     end;
  7  /

     。

B@orcl> create table t2 (x int);
create table t2 (x int)
*
  1      :
ORA-01031:     

--------------------------
Present  By  Dylan.

좋은 웹페이지 즐겨찾기