[ko] translate secrets-good-practices.md into Korean
parent
c4b3d67f8c
commit
007890fd47
|
@ -0,0 +1,116 @@
|
|||
---
|
||||
title: 쿠버네티스 시크릿 모범 사례
|
||||
description: >
|
||||
클러스터 운영자와 애플리케이션 개발자를 위한 모범 시크릿 관리 규칙 및 사례.
|
||||
content_type: concept
|
||||
weight: 70
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
||||
{{<glossary_definition prepend="쿠버네티스에서 시크릿은"
|
||||
term_id="secret" length="all">}}
|
||||
|
||||
다음 모범 사례는 클러스터 관리자와 애플리케이션 개발자 모두를 위한 것이다.
|
||||
이 가이드라인을 사용하여 시크릿 오브젝트에 있는
|
||||
민감한 정보의 보안을 개선하고
|
||||
시크릿을 보다 효과적으로 관리할 수 있다.
|
||||
|
||||
<!-- body -->
|
||||
|
||||
## 클러스터 관리자
|
||||
|
||||
이 섹션에서는 클러스터 관리자가 클러스터의 기밀 정보 보안을 개선하는 데
|
||||
사용할 수 있는 모범 사례를 제공한다.
|
||||
|
||||
### 저장된 데이터(at rest)에 암호화 구성
|
||||
|
||||
기본적으로 시크릿 오브젝트는 {{<glossary_tooltip term_id="etcd" text="etcd">}}에
|
||||
암호화되지 않은 상태로 저장된다. 따라서 `etcd`의 시크릿 데이터에 암호화를 구성해야 한다.
|
||||
자세한 내용은
|
||||
[Encrypt Secret Data at Rest](/docs/tasks/administer-cluster/encrypt-data/)를 참고한다.
|
||||
|
||||
### 시크릿에 대한 최소 권한 접근 구성 {#least-privilege-secrets}
|
||||
|
||||
쿠버네티스 {{<glossary_tooltip term_id="rbac" text="역할 기반 접근 제어 (RBAC)">}}
|
||||
[(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" >}}를 통해 시크릿을 구성하는 경우,
|
||||
이 파일을 공유하거나 소스 리포지토리에 체크인하면 매니페스트를 읽을 수 있는 모든 사람이
|
||||
시크릿을 사용할 수 있다는 것을 의미한다.
|
||||
|
||||
{{<caution>}}
|
||||
Base64 인코딩은 암호화 방식이 _아니며_, 일반 텍스트에 비해 추가적인
|
||||
기밀성을 제공하지 않는다.
|
||||
{{</caution>}}
|
Loading…
Reference in New Issue