배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   2003
검색어:   보안, 개체숨기기
제목:   보안 그리고 공유...두번째
     
 

  STEP> 따라하기

사실 여러 보안기법들 중에는 사용자가 모르기 때문에 지켜지는 보안방법들이 있습니다. 개발자가 설정한 보안장치를 무력화 시키는 방법을 알기 전에는 안전하지만 알게 되면 또는 우연히, 사용자에 의해 간파 될 수 있는 소극적인 보안장치 입니다. ‘눈가리고 아웅’인 방법이지요.

예를 들면 Crocii가 예전에 엑셀 파일을 특정 사용자만 열 수 있게 하기 위해 지금의 Auto_Open 프로시져를 통해 사용자 개인의 이름과 암호를 묻고 맞으면 열리고 틀리면 바로 종료 되도록 장치를 해 두었습니다. 지금은 매크로를 포함할 것이진 아닌지를 묻기 때문에 소용없는 방법이지만 당시로는 꽤 든든한 보안장치라고 스스로 생각했었지요.

하지만 며칠 후에 방법을 달리 해야 했습니다. 그 파일을 다른 엑셀 파일에서 코딩을 통해 부르자 아무런 이벤트의 발생 없이 열려 버리는 것이었습니다.
액세스에도 사용자가 모를 때만 지켜지는 소극적인 보안장치들이 있습니다.

보안이라는 주제가 흥미롭지 않은 것이라서 그런지 많지 않은 분들만이 관심을 가지셨더군요. 한편으로는 다행이라는 생각이 들었습니다. 보안이라는 것이 사용자가 많이 알게 되면 그만큼 깨지게 될 확률도 높기 때문이지요. 오늘 알려 드릴 부분은 특히 그렇습니다. 묻어 두면 그만큼 더 지켜지는 방법들 입니다. 그런데 밝히려 하는 이유는 처음 프로그램을 작성하게 되면 이렇게 소극적인 방법들에 의지하여 보안을 유지하려고 하기 때문입니다.

오늘은 사용자가 모를 때 유지되는 소극적인 방법의 보안에 대해서 알아 보도록 하겠습니다. 이런 방법에만 의지하지 말라는 의미에서 이지요.

개발이 완료되고 사용자에게 배포할 때, 테이블의 구성, 구조가 드러나길 원치 않는 경우가 있습니다. 다음의 방법으로 테이블을 숨길 수 있습니다.

<개체 숨기기>

숨기고 싶은 테이블 선택하고 마우스 오른쪽 버튼을 클릭한 후, 속성 메뉴를 클릭합니다.

아래와 같은 창이 뜨면 숨김 항목을 체크하고 확인 버튼을 클릭합니다.

아래와 같이 숨김 속성을 적용한 테이블이 사라졌음을 알 수 있습니다.

이런 방식으로 테이블 뿐만 아니라 쿼리, 폼, 매크로등 파일 내의 모든 오브젝트를 숨길 수 있습니다.

이렇게 숨겨진 개체를 다시 보이게 하고 싶을 때는 도구 - 옵션 메뉴를 차례로 클릭하여 숨겨진 개체 항목에 체크하고 확인 버튼을 클릭 합니다.

위와 같이 숨겨진 개체의 아이콘이 흐릿하게 표현 되며 보여지게 됩니다.
보안으로서는 그다지 의미가 없지요. End-User에게 화면 구성이 깔끔하게 보이게 하는 정도의 서비스라고 생각 하시는 것이 좋을 것입니다.

<창 숨기기>

열려진 폼을 숨기려면 창 메뉴의 숨기기 항목을 클릭하면 됩니다. 활성화 된 창이 보이지 않게 됩니다.

데이터베이스 창 역시 클릭하여 활성화 시킨 후, 창 메뉴의 숨기기를 클릭하면 보이지 않게 됩니다.

다시 보이게 하려면 창 메뉴의 숨기기 취소를 클릭한 후 보이고자 하는 창을 선택하고 확인 버튼을 클릭합니다.

<데이터베이스 창 숨기기>

파일 실행시 언제나 데이터 베이스 창이 안보이게 하려면 도구 메뉴에서 시작 항목을 클릭합니다. 아래와 같은 대화상자가 나타납니다.

- 홈/페이지 표시 : 응용 프로그램이 시작 될 때 처음 실행하게 될 폼을 지정해 주는 항목 입니다. 반드시 지정해야 합니다.
- 데이터베이스 창 표시:  체크를 해제하면 응용 프로그램이 시작될 때 언제나 데이터베이스 창이 보이지 않게 됩니다.
- 기본 바로 가기 메뉴 사용 : 위와 같이 설정하고 확인 버튼을 클릭한 후 프로그램을 재 실행 하면 데이터 베이스 창이 안 나타나게 됩니다.

이 때 창 메뉴의 숨기기 취소 항목을 클릭하거나 F11 키를 누르면 데이터베이스 창이 다시 나타납니다.

이렇게 단축키에 의해 데이터베이스 창이 나타나는 것을 막으려면 시작 대화상자에서 전체 메뉴 사용의 체크항목을 해제 하면 됩니다. 이렇게 하면 Alt+F11로 VBE창을 여는 단축키나 Ctrl+Break로 프로시져 실행을 일시 정지 시키는 단축키등이 모두 사용 불가능 하게 됩니다.
창 메뉴에 의해 데이터베이스 창이 나타나는 것을 막으려면 기본 바로 가기 메뉴 사용의 체크항목을 해제 하시면 됩니다. 주의 하실 것은 기본 바로 가기 메뉴 사용의 체크 항목은 모든 작업이 완료되고 가장 나중에 하는 것이 좋습니다. 안 그러면 대부분의 메뉴가 메뉴줄에서 사라지기 때문에 작업시 불편 합니다.

이렇게 모두 설정해 두면 이제는 사용자가 데이터베이스 창을 볼 수 없을까요?
Shift키를 누른 채로 프로그램을 실행 시키면 시작 창에서 설정한 모든 내용이 적용되지 않습니다. 즉 데이터베이스 창도 보여지고 가장 처음 실행하기로 한 폼도 실행 되지 않습니다.

이렇게 Shift키를 누른채 프로그램을 여는 것을 막기위해 도움말의 검색창에서 AllowBypassKey로 검색을 하면 설명과 함께 다음과 같은 두가지 프로시져를 제공합니다.

첫번째 프로시져의 False 부분이 Shift키가 사용되게 할 것인가 말 것인가를 결정하는 부분입니다. False면 Shift키가 작동하지 않게 되고 True면 다시 사용할 수 있게 됩니다.

사용방법은 첫번째 프로시져의 아무 곳이나 커서를 위치 시키고 F5 키를 눌러 실행시키면 될 것입니다.

Sub SetBypassProperty()
  Const DB_Boolean As Long = 1
    ChangeProperty "AllowBypassKey", DB_Boolean, False
End Sub

Function ChangeProperty(strPropName As String, varPropType As Variant,   varPropValue As Variant) As Integer
  Dim dbs As Object, prp As Variant
  Const conPropNotFoundError = 3270

  Set dbs = CurrentDb
  On Error GoTo Change_Err
  dbs.Properties(strPropName) = varPropValue
  ChangeProperty = True

Change_Bye:
Exit Function

Change_Err:
If Err = conPropNotFoundError Then ' 속성을 찾을 수 없습니다.
  Set prp = dbs.CreateProperty(strPropName, _
  varPropType, varPropValue)
  dbs.Properties.Append prp
  Resume Next
Else
  ' 알 수 없는 오류가 발생합니다.
  ChangeProperty = False
  Resume Change_Bye
End If
End Function
 

이 프로시져들은 나중에 다시 언급 될 겁니다.

<개체 가져오기>

여기까지 하면 이제 사용자들로부터 완벽하게 보안을 유지할 수 있을까요?
아래의 방법은 파일이 손상되었을 때에도 복구를 위해 사용되는 방법입니다. 하지만 같은 방법으로 상기의 보안방법이 모두 적용된 것들을 한번에 무력화 시킬 수 있습니다.

빈 mdb파일 생성하고 데이터베이스 창에서 마우스 오른쪽 버튼을 선택한 후, 가져오기 항목을 클릭합니다.

해당 파일을 찾아서 선택한 후 확인 버튼을 클릭하면 아래와 같이 모든 개체가 그대로 드러나게 됩니다. 모두 선택을 클릭하고 확인을 누르면 연결된 테이블조차 연결된 채로 가져 오게 됩니다.

조금, 당황스러우신가요? 굳이 옆 사람에게 알려 줄 필요는 없겠지요. 이 글을 읽으시는 여러분만 알고 계십시오. 몰라서 지켜지는 방법들이니까요. ^^*

여러 보안장치가 적용된 파일을 샘플로 올려 두겠습니다. 다운 받아 확인해 보시면 다음 팁에서 설명하는 내용이 쉽게 이해 되실 것이라 생각 됩니다.