다음을 통해 공유


애플리케이션 비밀 보호를 위한 권장 사항

이 Power Platform Well-Architected Security 체크리스트 권장 사항에 적용됩니다.

남동:07 스토리지를 강화하고 액세스 및 조작을 제한하고 해당 작업을 감사하여 애플리케이션 비밀을 보호합니다. 긴급 상황에 대비하여 즉석에서 순환을 처리할 수 있는 안정적이고 정기적인 순환 프로세스를 실행합니다.

이 가이드에서는 워크로드에서 중요한 정보를 보호하기 위한 권장 사항을 설명합니다. 애플리케이션, 워크로드 및 관련 데이터의 보안과 무결성을 유지하려면 비밀을 적절하게 관리하는 것이 중요합니다. 비밀을 부적절하게 처리하면 데이터 유출, 서비스 중단, 규제 위반 및 기타 문제가 발생할 수 있습니다.

API 키, Open Authorization(OAuth) 토큰, Secure Shell(SSH) 키와 같은 자격 증명은 비밀입니다. 규정 준수 요구 사항으로 인해 일반적으로 비밀로 간주되지 않는 구성 설정이 애플리케이션 비밀로 처리될 수 있습니다.

정의

용어 정의
인증서 암호화 또는 복호화를 위한 공개 키를 보유하는 디지털 파일입니다.
자격 증명 통신 채널에서 게시자 또는 소비자의 신원을 확인하는 데 사용되는 정보입니다.
자격 증명 스캔 비밀이 포함되지 않았는지 확인하기 위해 소스 코드의 유효성을 검사하는 프로세스입니다.
암호화 데이터를 읽을 수 없게 만들고 비밀 코드로 잠그는 프로세스입니다.
Key 암호화된 데이터를 잠그거나 잠금 해제하는 데 사용되는 비밀 코드입니다.
최소 권한 액세스 직무 기능을 완료하기 위한 일련의 권한을 최소화하는 것을 목표로 하는 제로 트러스트 원칙입니다.
관리 ID 리소스에 할당되고 Azure에서 관리되는 ID입니다.
비밀 아님 정보가 유출되더라도 워크로드의 보안 상태를 위태롭게 하지 않는 정보입니다.
회전 비밀이 손상된 경우 제한된 시간 동안만 사용할 수 있도록 비밀을 정기적으로 업데이트하는 프로세스입니다.
암호 워크로드 구성 요소 간의 통신을 용이하게 하는 시스템의 기밀 구성 요소입니다. 비밀이 유출되면 보안 침해가 발생할 수 있습니다.
X.509 공개 키 인증서의 형식을 정의하는 표준입니다.

중요

비밀이 아닌 것을 비밀처럼 다루지 마세요. 비밀에는 비밀이 아닌 경우 불필요하고 추가 비용이 발생할 수 있는 엄격한 운영이 필요합니다.

애플리케이션에 필요한 API의 URL과 같이 비밀이 아닌 애플리케이션 설정은 애플리케이션 코드 또는 애플리케이션 비밀과 별도로 유지되어야 합니다. 애플리케이션 구성을 저장하려면 사용자 정의 커넥터 또는 환경 변수를 사용하는 것이 좋습니다. 또 다른 옵션은 Dataverse 테이블을 사용하여 애플리케이션 구성에 대한 메타데이터를 저장하는 것입니다. 그러나 구성 데이터를 개발에서 테스트 또는 프로덕션으로 전송하는 등 새로운 환경에서 이 데이터를 채울 수 있는 방법을 찾아야 합니다. 데이터 흐름을 사용하여 이 작업을 완료할 수 있습니다.

주요 디자인 전략

비밀을 저장하고 관리하기 전에 다음과 같은 관심 영역을 고려하세요.

  • 생성된 비밀은 엄격한 접근 통제를 통해 안전한 저장소에 보관되어야 합니다.
  • 보안 비밀 교체는 사전 대응적인 작업인 반면 해지는 사후 대응입니다.
  • 신뢰할 수 있는 ID만 비밀에 액세스할 수 있어야 합니다.
  • 비밀에 대한 액세스를 검사하고 검증하려면 감사 추적을 유지해야 합니다.

신원 도용을 방지하고 부인을 방지하며 정보에 대한 불필요한 노출을 최소화하는 데 도움이 되는 이러한 점을 중심으로 전략을 수립하세요.

비밀 관리를 위한 안전한 관행

키에는 사용자, 관리자, 감사자라는 세 가지 역할이 있는 것이 좋습니다. 역할 구별은 신뢰할 수 있는 ID만 적절한 수준의 권한을 통해 비밀에 액세스할 수 있도록 하는 데 도움이 됩니다. 비밀 관리 및 보안 모범 사례의 중요성에 대해 개발자, 관리자 및 기타 관련 직원을 교육합니다.

사전 공유 키

각 소비자에 대해 고유한 키를 생성하여 액세스를 제어할 수 있습니다. 예를 들어 앱이나 흐름과 같은 클라이언트는 사전 공유 키를 사용하여 타사 API와 통신합니다. 다른 클라이언트가 동일한 API에 액세스해야 하는 경우 다른 키를 사용해야 합니다. 두 소비자가 동일한 액세스 패턴이나 역할을 갖고 있더라도 키를 공유하지 마세요. 소비자 범위는 시간이 지남에 따라 변경될 수 있으며, 키가 공유된 후에는 독립적으로 권한을 업데이트하거나 사용 패턴을 구별할 수 없습니다. 또한 고유한 액세스를 통해 해지가 더 쉬워집니다. 소비자의 키가 손상된 경우 다른 소비자에게 영향을 주지 않고 해당 키를 취소하거나 순환하는 것이 더 쉽습니다.

이 지침은 다양한 환경에 적용됩니다. 사전 프로덕션 환경과 프로덕션 환경 모두에 동일한 키를 사용하면 안 됩니다. 사전 공유 키 생성을 담당하는 경우 여러 클라이언트를 지원하기 위해 여러 키를 생성해야 합니다.

자세한 내용은 ID 및 액세스 관리 권장 사항을 참조하세요.

비밀 스토리지

Azure Key Vault와 같은 비밀 관리 시스템을 사용하여 강화된 환경에 비밀을 저장하고, 저장 중 및 전송 중인 비밀을 암호화하고, 비밀에 대한 액세스 및 변경 사항을 감사합니다. 애플리케이션 비밀을 저장해야 하는 경우 쉽게 교체할 수 있도록 소스 코드 외부에 보관하세요.

전용 비밀 관리 시스템을 사용하면 애플리케이션 비밀에 대한 액세스를 쉽게 저장, 배포 및 제어할 수 있습니다. 승인된 ID와 서비스만 비밀 저장소에 접근할 수 있어야 합니다. 권한을 통해 시스템에 대한 접근을 제한할 수 있습니다. 권한을 할당할 때는 항상 최소 권한 접근 방식을 적용하세요.

또한 비밀 수준에서 액세스를 제어해야 합니다. 각 비밀은 단일 리소스 범위에만 액세스할 수 있어야 합니다. 구성 요소가 필요한 비밀만 사용할 수 있도록 격리 경계를 만듭니다. 격리된 구성 요소가 손상되면 다른 비밀과 잠재적으로 전체 워크로드를 제어할 수 없습니다. 비밀을 격리하는 한 가지 방법은 여러 키 자격 증명 모음을 사용하는 것입니다. 추가 Key Vault를 만드는 데 드는 추가 비용은 없습니다.

비밀 액세스에 대한 감사 및 모니터링을 구현합니다. 비밀에 액세스하는 사람과 무단 활동 또는 의심스러운 활동을 식별하는 시기를 기록합니다. 보안 관점에서 로깅에 대한 자세한 내용은 모니터링 및 위협 감지에 대한 권장 사항을 참조하세요.

비밀 순환

비밀 위생을 유지하는 프로세스를 마련하세요. 비밀의 수명은 해당 비밀의 관리에 영향을 미칩니다. 공격 벡터를 줄이려면 비밀을 폐기하고 가능한 한 자주 새로운 비밀로 교체해야 합니다.

액세스 토큰은 수명(Two Time Delay)을 고려하여 신중하게 다루어야 합니다. OAuth 노출 창을 더 짧은 기간으로 조정해야 하는지 고려하세요. 새로 고침 토큰은 애플리케이션에 대한 노출이 제한되어 안전하게 저장되어야 합니다. 갱신된 인증서도 새 키를 사용해야 합니다. 새로 고침 토큰에 대한 자세한 내용은 보안 OAuth 2.0 대신 새로 고침 토큰을 참조하세요.

수명이 다한 후, 워크로드에서 더 이상 사용되지 않거나 손상된 경우 비밀을 교체하세요. 반대로 긴급 상황이 아닌 이상 활성 비밀을 폐기하지 마세요. 액세스 로그를 보면 비밀의 상태를 확인할 수 있습니다. 비밀 순환 프로세스는 워크로드의 안정성이나 성능에 영향을 주어서는 안 됩니다. 원활한 순환을 위해 비밀, 소비자 및 액세스 방법에 중복성을 구축하는 전략을 사용합니다.

보안 비밀 사용을 위한 안전한 방법

비밀 생성자 또는 운영자로서 귀하는 안전한 방식으로 비밀을 배포할 수 있어야 합니다. 많은 조직에서는 도구를 사용하여 조직 내부 및 외부 파트너와 비밀을 안전하게 공유합니다. 도구가 없는 경우 인증된 수신자에게 자격 증명을 적절하게 전달하는 프로세스를 마련하세요. 재해 복구 계획에는 비밀 복구 절차가 포함되어야 합니다. 키가 손상되거나 유출되어 요청 시 키를 재생성해야 하는 상황에 대한 프로세스를 갖추고 있습니다. 비밀을 사용할 때는 안전을 위한 다음 모범 사례를 따르세요.

하드코딩 방지

클라우드 흐름 및 캔버스 앱, 구성 파일, 빌드-배포 파이프라인 등의 코드 아티팩트에 정적 텍스트로 비밀을 하드 코딩하지 마세요. 이러한 고위험 관행은 읽기 액세스 권한이 있는 모든 사람에게 비밀이 노출되기 때문에 코드를 취약하게 만듭니다.

애플리케이션 코드에서 노출된 비밀을 주기적으로 감지하고 아티팩트를 빌드하는 도구를 사용하세요. 이러한 도구를 배포 파이프라인의 일부로 추가하여 소스 코드가 배포를 커밋하기 전에 자격 증명을 검색할 수 있습니다. 실수로 비밀이 기록되지 않도록 애플리케이션 로그를 정기적으로 검토하고 정리하세요. 동료 검토를 통해 탐지를 강화할 수도 있습니다.

참고

검색 도구가 비밀을 발견하면 해당 비밀은 손상된 것으로 간주되어야 합니다. 취소되어야 합니다.

보안 비밀 순환에 응답

워크로드 소유자는 사용자 중단을 최소화하면서 새 보안 비밀을 통합할 수 있도록 보안 비밀 순환 계획과 정책을 이해해야 합니다. 비밀이 교체되면 다음이 발생할 수 있습니다. 이전 비밀이 유효하지 않지만 새 비밀이 배치되지 않은 경우 창이 됩니다. 해당 기간 동안 워크로드가 연결하려는 구성 요소는 요청을 승인하지 않습니다. 코드에 재시도 논리를 구축하면 이러한 문제를 최소화할 수 있습니다. 또한 서로 영향을 주지 않고 안전하게 변경할 수 있는 여러 자격 증명을 가질 수 있는 동시 액세스 패턴을 사용할 수도 있습니다.

운영팀과 협력하여 변경 관리 프로세스에 참여하세요. 더 이상 필요하지 않은 자격 증명을 사용하는 워크로드의 일부를 해제하는 경우 자격 증명 소유자에게 알려야 합니다.

비밀 검색 및 구성을 자동화된 배포 파이프라인에 통합하세요. 비밀 검색은 배포 중에 비밀을 자동으로 가져오는 데 도움이 됩니다. 또한 비밀 삽입 패턴을 사용하여 런타임 시 애플리케이션 코드나 구성에 비밀을 삽입할 수 있습니다. 이를 통해 비밀이 실수로 로그나 버전 제어에 노출되는 것을 방지할 수 있습니다.

Power Platform 간편 사용

다음 섹션에서는 애플리케이션 비밀번호를 관리하는 데 사용할 수 있는 Power Platform 기능에 대해 설명합니다.

Azure Key Vault 암호 사용

환경 변수를 사용하면 Azure Key Vault에 저장된 시크릿을 참조할 수 있습니다. 그런 다음 이러한 암호는 Power Automate 흐름 및 사용자 지정 커넥터 내에서 사용할 수 있습니다. 비밀은 다른 사용자 지정이나 일반적으로 API를 통해 사용할 수 없습니다.

실제 암호은 Azure Key Vault에 저장되고 환경 변수는 키 자격 증명 모음 암호 위치를 참조합니다. 환경 변수와 함께 Azure Key Vault 암호를 사용하려면 Power Platform이 참조하려는 특정 암호를 참조할 수 있도록 Azure Key Vault를 구성해야 합니다. 자세한 내용은 솔루션에서 환경 변수 사용솔루션 사용자 지정 커넥터에서 환경 변수 사용을 참조하세요.

솔루션 검사기 사용

솔루션 검사 기능을 사용하면 모범 사례 규칙 세트에 따라 솔루션에 대한 풍부한 정적 분석 검사를 수행하고 이러한 문제 패턴을 신속하게 식별할 수 있습니다. 확인이 완료되면 식별된 문제, 영향을 받는 구성 요소 및 코드, 각 문제를 해결하는 방법을 설명하는 설명서에 대한 링크가 나열된 자세한 보고서를 받게 됩니다. 보안 범주에서 사용 가능한 솔루션 검사기 규칙을 검토하세요. 자세한 내용은 솔루션 검사기를 사용하여 솔루션 유효성 검사를 참조하세요.

CyberArk 작업 사용

CyberArk는 엔드 투 엔드에서 사람과 기계의 신원을 보호하는 신원 보안 플랫폼을 제공합니다. Power Automate 데스크톱 흐름을 사용하면 CyberArk에서 자격 증명을 검색할 수 있습니다. 자세한 내용은 CyberArk 작업을 참조하세요.

보안 체크리스트

전체 권장 사항 세트를 참조하세요.