diff --git a/content/ko/docs/concepts/security/secrets-good-practices.md b/content/ko/docs/concepts/security/secrets-good-practices.md new file mode 100644 index 0000000000..47e2575cb0 --- /dev/null +++ b/content/ko/docs/concepts/security/secrets-good-practices.md @@ -0,0 +1,116 @@ +--- +title: 쿠버네티스 시크릿 모범 사례 +description: > + 클러스터 운영자와 애플리케이션 개발자를 위한 모범 시크릿 관리 규칙 및 사례. +content_type: concept +weight: 70 +--- + + + +{{}} + +다음 모범 사례는 클러스터 관리자와 애플리케이션 개발자 모두를 위한 것이다. +이 가이드라인을 사용하여 시크릿 오브젝트에 있는 +민감한 정보의 보안을 개선하고 +시크릿을 보다 효과적으로 관리할 수 있다. + + + +## 클러스터 관리자 + +이 섹션에서는 클러스터 관리자가 클러스터의 기밀 정보 보안을 개선하는 데 +사용할 수 있는 모범 사례를 제공한다. + +### 저장된 데이터(at rest)에 암호화 구성 + +기본적으로 시크릿 오브젝트는 {{}}에 +암호화되지 않은 상태로 저장된다. 따라서 `etcd`의 시크릿 데이터에 암호화를 구성해야 한다. +자세한 내용은 +[Encrypt Secret Data at Rest](/docs/tasks/administer-cluster/encrypt-data/)를 참고한다. + +### 시크릿에 대한 최소 권한 접근 구성 {#least-privilege-secrets} + +쿠버네티스 {{}} +[(RBAC)](/ko/docs/reference/access-authn-authz/rbac/)와 같은 접근 제어 메커니즘을 계획할 때, +`Secret` 오브젝트에 대한 접근에 대해 다음 가이드라인을 고려한다. 또한 +[역할 기반 접근 제어 (RBAC) 모범 사례](/ko/docs/concepts/security/rbac-good-practices)의 +다른 가이드라인도 따라야 한다. + +- **컴포넌트**: 가장 권한이 높은 시스템 수준의 구성 요소에 대해서만 + `watch`나 `list` 액세스를 제한한다. 컴포넌트의 정상 동작에 필요한 경우에만 + 시크릿에 대한 `get` 액세스를 허용한다. +- **사람**: 시크릿에 `get`, `watch` 또는 `list` 액세스를 제한한다. 클러스터 관리자에게만 + `etcd`에 대한 액세스를 허용한다. 여기에는 읽기 전용 액세스가 포함된다. 특정 어노테이션을 + 사용하여 시크릿에 대한 액세스를 제한하는 등의 더 복잡한 액세스 제어를 수행하려면 + 써드파티(third-party) 권한 부여 메커니즘을 사용하는 것을 고려한다. + +{{< caution >}} +시크릿에 대한 `list` 액세스 권한을 부여하면 주체가 암시적으로 +시크릿의 내용을 가져갈 수 있다. +{{< /caution >}} + +시크릿을 사용하는 파드를 생성할 수 있는 사용자는 해당 시크릿의 값도 볼 수 있다. +클러스터 정책에서 사용자가 시크릿을 직접 읽는 것을 허용하지 않더라도, +동일한 사용자가 시크릿을 노출하는 파드를 실행할 수 있다. +이 액세스 권한을 가진 사용자가 의도적이든 의도적이지 않든 시크릿 데이터를 노출시켜 +발생할 수 있는 영향을 감지하거나 제한할 수 있다. +몇 가지 권장 사항은 다음과 같다. + +* 수명이 짧은 시크릿 사용 +* 한 사용자가 여러 비밀을 동시에 읽는 것과 같은 특정 이벤트에 대해 + 경고하는 감사 규칙 구현 + +### etcd 관리 정책 개선 + +더 이상 사용하지 않는다면 `etcd`에서 사용하는 내구성 스토리지를 +지우거나 파쇄하는 것을 고려한다. + +여러 개의 `etcd` 인스턴스가 있는 경우, 인스턴스 간에 암호화된 SSL/TLS 통신을 구성하여 +전송 중(in transit)인 시크릿 데이터를 보호한다. + +### 외부 시크릿에 대한 액세스 구성 + +{{% thirdparty-content %}} + +써드파티 시크릿 저장소 공급자를 사용하여 기밀 데이터를 클러스터 외부에 보관한 다음 +해당 정보에 액세스하도록 파드를 구성할 수 있다. +[쿠버네티스 시크릿 스토어 CSI 드라이버](https://secrets-store-csi-driver.sigs.k8s.io/)는 +kubelet이 외부 스토어에서 시크릿을 검색하고 +접근 권한을 부여한 특정 파드에 시크릿을 볼륨으로 마운트할 수 있도록 하는 +데몬셋(DaemonSet)이다. + +지원되는 제공자 목록은 다음을 참고한다. +[시크릿 스토어 CSI 드라이버 제공자](https://secrets-store-csi-driver.sigs.k8s.io/concepts.html#provider-for-the-secrets-store-csi-driver). + +## 개발자 + +이 섹션은 개발자가 쿠버네티스 리소스를 구축하고 배포할 때 +기밀 데이터의 보안을 개선하기 위해 사용할 수 있는 모범 사례를 제공한다. + +### 특정 컨테이너에 시크릿 액세스 제한 + +파드에 여러 개의 컨테이너를 정의하고 있고 그 중 하나만 시크릿에 접근해야 하는 경우, +볼륨 마운트 또는 환경 변수 구성을 정의하여 +다른 컨테이너가 해당 시크릿에 액세스하지 못하도록 +한다. + +### 읽기 후 시크릿 데이터 보호 + +애플리케이션은 환경 변수나 볼륨에서 기밀 정보를 읽은 후에도 그 값을 보호해야 한다. +예를 들어, 애플리케이션은 시크릿 데이터를 로그에 남기거나 +신뢰할 수 없는 상대에게 +전송하지 않아야 한다. + +### 시크릿 매니페스트 공유 방지 + +시크릿 데이터가 base64로 인코딩된 +{{< glossary_tooltip text="매니페스트" term_id="manifest" >}}를 통해 시크릿을 구성하는 경우, +이 파일을 공유하거나 소스 리포지토리에 체크인하면 매니페스트를 읽을 수 있는 모든 사람이 +시크릿을 사용할 수 있다는 것을 의미한다. + +{{}} +Base64 인코딩은 암호화 방식이 _아니며_, 일반 텍스트에 비해 추가적인 +기밀성을 제공하지 않는다. +{{}}