티스토리 뷰

반응형

2023.12.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part4

2023.12.20 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part3

2023.11.22 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part2

2023.11.20 - [Entity Framework Core] - Sql Always Encrypted 사용하기 Part1

 

Azure Key Vault 설정을 합니다.

 

1. Azure Key Vault 생성

아래 내용 중 Key Vault를 선택합니다.

아래 정보로 입력합니다.

리소스 그룹 선택하고, Region선택하고 Pricing tier선택 등 일반적인 내용을 선택하시면 됩니다.

Next버튼을 눌러서 다음 항목을 설정합니다.(

***** 암호화 키를 SSM를 통해서 생성해야 하기 때문에 Vault access policy를 선택해서, 관리자를 연결시켜 줍니다.

Review + create 버튼을 클릭해서 내용확인 하고 Create 버튼을 눌러서 서비스를 생성합니다.

생성 버튼을 누른 후 잠시 대기하시고, 완료되면 Go to resource 버튼을 눌러서 이동하시면 됩니다.

2. SSMS에서 Azure Key Vault와 연결

Database 폴더 중 Security -> Always Encrypted Keys -> 마우스 오른쪽 컨텍스트 메뉴 -> New Column Master Key... 선택

Key store 콤보박스 선택해서 Azure Key Vault 선택, Allow enclave computations는 선택 미선택

Sign In... 버튼 클릭 후 Azure 로그인

로그인 하면 잠시 후에 아래와 같은 내용이 출력됩니다.

  • Name에 KakiAKV 입력
  • Select a key vault에서 방금 생성한 리소스 선택
  • Generate Key 클릭
  • Ok

최종 이미지

3. 컬럼 암호화

테이블에서 마우스 오른쪽 -> Encrypt Columns 선택

2개의 컬럼을 선택하고 아래와 같이 암호화 방식 선택 후 Next

Select the key store provider -> Azure Key Vault 선택 후 Next\

Allow enclave computations는 미체크

암호화 중에 오류 발생

대충 내용은 아래와 같습니다.
Content:
{"error":{"code":"Forbidden","message":"The user, group or application 'appid=04b07795-8ddb-461a-bbee-02f9e1bf7b46;oid=82860dec-bf36-42ad-b8e9-794622f11dfd;numgroups=1;iss=https://sts.windows.net/b1ad2c09-785a-4dcd-896c-75de6388ffcd/' does not have keys sign permission on key vault 'kakisamplekey;location=eastus'. For help resolving this issue, please see https://go.microsoft.com/fwlink/?linkid=2125287","innererror":{"code":"ForbiddenByPolicy"}}}

다시 Azure로 돌아와서

Access policies -> 사용자 선택하고 상단에 Edit 클릭

사용자의 상세 권한 목록을 볼 수 있습니다. 아마 Cryptographic Operations들에 대해 체크가 필요할 것 같습니다.

그 아래 Privileged Key Operations 들도 필요할 것 같아서 모두 체크 합니다.

Next 버튼 누르고 저장하기 눌러서 반영

 

다시 위의 과정을 반복하다가 여기서 Auto generate column master key를 눌러서 KakiAKV를 선택했습니다. 좀전에 마스터 키를 등록했으니 그 녀석을 사용해야 겠죠?

바로 성공이 뜨네요

데이터베이스 연결할 때 암호화 옵션을 선택하지 않았기 때문에 쿼리를 실행하면 아래와 같이 나옵니다. 

연결을 끊고 이번에는 암호화 상태로 접속하겠습니다.

연결할 때 Option -> Always Encrypted 탭에서 Enable Always Encrypted를 선택하고 Connect를 누릅니다.

로그인 할 때 Azure 로그인을 물어보지는 않았는데, Azure에 로그인이 않되어 있으면 물어보는 창이 뜹니다.

테이블을 다시 조회하면 아래와 같은 결과가 나옵니다.

 

반응형
댓글