2017-11-12 14 views
1

응용 프로그램 개발을 위해 .NET Core 2.0 및 ASP.NET Core 2.0을 사용하고 있습니다. "테스트"응용 프로그램은 .NET Core Console 응용 프로그램입니다. 내가 쓰고있는 핵심 코드는 클래스 라이브러리이다. 일단 적절한 테스트. 이 작업은 이전에 사용하던 ASPNET 코드를 대체하기 위해 사용하지 않기 때문에이 작업을 선택했습니다.Azure Vault 클라이언트 ID 및 클라이언트 비밀 키 저장

어쨌든 다양한 서비스를 위해 많은 API 키를 사용해야하므로 Microsoft Azure 키 볼트를 사용하여 키를 저장하기로 결정했습니다. 이 모든 설정을하고 어떻게 작동하는지 이해합니다. 테스트 응용 프로그램은 테스트 Azure 계정을 사용하므로 중요하지 않습니다. 그리고 이것이 기존 코드를 대체하고 있으며 초기 단계에 있기 때문에 나는 유일한 개발자입니다.

기본적으로이 문제가 발생합니다. Azure Key Vault에는 내가 볼 수있는 정보가 너무 많습니다. 많은 예가 클라이언트 ID 및 비밀번호일반 텍스트 json 파일 (예 : https://www.humankode.com/asp-net-core/how-to-store-secrets-in-azure-key-vault-using-net-core)에 저장합니다. 나는 이것이 어떻게 안전 할 수 있는지 정말로 이해하지 못한다. 누군가 그 열쇠를 얻는다면 저장된 정보 Azure에 쉽게 접근 할 수 있습니다. 맞습니까?

Microsoft MSDN에는 액세스 권한을 부여하는 powershell 명령이 있습니다 (원래 링크를 잃어 버렸습니다. 가장 가까운 주소는 https://www.red-gate.com/simple-talk/cloud/platform-as-a-service/setting-up-and-configuring-an-azure-key-vault/입니다). 내 개발 운영 체제는 Windows 10이고 내 주 서버 운영 체제는 데비안입니다.

어떻게 접근합니까?

답변

4

네, 맞습니다. 일반 텍스트 구성 파일은 프로덕션 용도가 아닌 개발 중에 만 사용할 수 있습니다. 일반적으로 사용 가능한 옵션은 앱을 호스팅하는 위치와 방법에 따라 다릅니다.

  • 는 푸른 포털에서 appSettings는 대한 클라이언트 ID 및 ClientSecret 값을 추가 : 당신은 푸른 웹 응용 프로그램이있는 경우

    , 당신은 적어도 다음 내장 옵션 (from the documentation)가 있습니다. 이렇게하면 실제 값은 web.config에는 없지만 별도의 액세스 제어 기능이있는 포털을 통해 보호됩니다. 이 값은 web.config에 입력 한 값으로 대체됩니다. 이름이 같은지 확인하십시오.

  • Azure AD 응용 프로그램을 인증하는 것은 클라이언트 ID와 클라이언트 비밀 번호 대신 인증서를 사용하는 것입니다.

    • 이 인증서
    • 을 사용하는 웹 응용 프로그램에 코드를 추가 푸른 AD 응용 프로그램과
    • 준 인증서 인증서를 받거나 만들기 : 다음은 푸른 Web App에서 인증서를 사용하는 단계입니다

응용 프로그램을 웹에 인증서 추가

env 변수를 사용하여 자격 증명을 저장하는 방식을 사용할 수도 있습니다. 이것은 prod machine에서 env 변수의 스냅 샷을 수행 할 수 없다는 것을 보장 할 수있는 경우에만 좋을 수 있습니다. 자세한 내용은 Environment Variables Considered Harmful for Your Secrets을 참조하십시오.


그리고 마지막 한 가지 : 아이디어에 기초한 기술은 응용 프로그램이 어디에 된 ClientID가 기계/컨테이너 정보를 기반으로하여 구성해야합니다 동안 만 ClientSecret 값을 전달/저장하는 데 필요도있다 호스팅 (예 : 도커 컨테이너 ID). Hashicorp Vault와 AWS에서 호스팅되는 앱의 예가 있지만 일반적인 아이디어는 같습니다. Secret management with Vault

관련 문제