시크릿 잠금
IBM Cloud® Secrets Manager 에서 작업할 때 비밀 번호에 잠금을 설정하여 애플리케이션에서 사용하는 동안 삭제하거나 수정하지 못하도록 할 수 있습니다.
기본적으로 권한 부여된 사용자 또는 애플리케이션은 언제든지 Secrets Manager 에서 관리하는 시크릿을 수정할 수 있습니다. 예를 들어, 보안 감사 중에 팀의 누군가가 실수로 시크릿을 삭제하는 것을 방지하려고 할 수 있습니다. 또는 정기적으로 시크릿을 순환하려는 경우에는 순환이 발생한 후 시크릿의 최신 버전을 안전하게 배치하는 방법을 찾고 있을 수 있습니다. 잠금을 사용하면 다음을 수행하는 데 도움이 되는 자동화된 워크플로우를 빌드할 수 있습니다.
- 하나 이상의 애플리케이션 또는 서비스에서 시크릿을 사용 중임을 표시합니다.
- 시크릿이 만료된 후에도 시크릿 데이터가 삭제되지 않도록 합니다.
- 최신 버전이 애플리케이션에 완전히 배치된 후 이전 버전의 시크릿을 안전하게 삭제하십시오.
- 애플리케이션에서 의도하지 않은 중단 시간을 방지하십시오.
애플리케이션 중단 시간을 방지하기 위해 잠금을 사용하기 위해 제안된 가이드라인에 대해 알아보려면 순환 및 잠금 시크릿에 대한 우수 사례 를 참조하십시오.
시작하기 전에
시작하기 전에 필수 액세스 레벨이 있는지 확인하십시오. 시크릿에 대한 잠금을 관리하려면 관리자 서비스 역할 이 필요합니다.
시크릿 잠금
시크릿을 잠그면 시크릿 데이터를 수정하거나 삭제할 수 있는 조작을 방지할 수 있습니다. 시크릿을 잠그려면 하나 이상의 잠금을 현재 또는 이전 버전에 첨부합니다.
잠겨 있는 상태에서 비밀번호를 수정하거나 삭제하려고 하면 Secrets Manager HTTP 412 Precondition Failed 응답으로 요청을 거부합니다. 다음 예시와 유사한 오류 메시지가 표시됩니다:
The requested action can't be completed because the secret version is locked.
동적 시크릿동적으로 작성되고 보호된 리소스에 대한 액세스에 필요한 액세스하기 위해 애플리케이션에 차용되는 고유한 값(예: 비밀번호 또는 API 키)입니다. 동적 시크릿이 차용 기간의 종료 시점에 도달하면 보호된 리소스에 대한 액세스가 취소되고 시크릿이 자동으로 삭제됩니다.(예: IAM 신임 정보) 에 대해 작업 중인 경우 시크릿을 잠그면 기본적으로 해당 시크릿을 읽거나 액세스할 수 없음을 의미합니다. 자세한 정보는 잠긴 IAM 인증 정보 시크릿을 읽을 수 없는 이유는 무엇입니까? 를 참조하십시오.
사용자 지정 자격증명 비밀은 모든 작업이 완료된 후에만 잠글 수 있습니다.
잠긴 시크릿이 만료 날짜에 도달하면 활성 상태로 유지되고 해당 데이터는 애플리케이션에 액세스할 수 있는 상태로 유지됩니다. Secrets Manager 는 시크릿을 영구 삭제됨 상태로 이동하고 시크릿에 대한 모든 잠금이 제거된 후에만 만료된 시크릿 데이터를 영구적으로 삭제합니다.
SSL / TLS 인증서는 잠겨 있더라도 정의된 만료 날짜에 도달하면 파기된 상태로 이동합니다. 자세한 정보는 잠긴 내 인증서가 영구 삭제됨 상태로 이동한 이유는 무엇입니까? 를 참조하십시오.
- 현재 버전이 잠겨 있고 이전 버전이 잠금 해제되어 있는 동안 (또는 자동 회전이 스케줄되어 있는 경우) 시크릿을 회전하는 요청이 허용됩니다. 현재 시크릿 버전은 기존 잠금을 유지하는 새 이전 버전이 됩니다. 잠금 없이 새 현재 버전이 작성됩니다.
- 이전 버전이 잠겨 있는 동안 (또는 자동 회전이 스케줄되어 있는 경우) 시크릿을 회전하려고 시도하면 시크릿을 회전하는 요청이 거부됩니다. 회전은 이전 시크릿 버전의 모든 잠금이 제거된 후에만 허용됩니다.
UI에서 잠금 설정하기
Secrets Manager UI를 사용하여 시크릿에 대해 최대 1000개의 잠금을 작성할 수 있습니다. 각 잠금을 사용하여 시크릿을 사용하는 단일 애플리케이션 또는 서비스를 표시할 수 있습니다.
하나 이상의 잠금을 연결한 후에는 시크릿이 잠긴 것으로 간주됩니다. 활성 페이로드 또는 시크릿 데이터를 포함하는 시크릿 버전에만 잠금을 적용할 수 있습니다.
단일 조작으로 새 잠금을 작성하고 이전 잠금을 제거하는 데 도움이 되도록 잠금 작성 시 선택적 모드를 지정할 수도 있습니다.
| 모드 | 설명 |
|---|---|
| 이전 잠금 제거 | 지정한 이름과 일치하는 다른 잠금을 제거합니다. 이전 버전의 시크릿에서 일치하는 잠금이 발견되면 새 잠금이 작성될 때 해당 잠금이 삭제됩니다.
예를 들어, 비밀의 이전 버전에 |
| 이전 잠금 제거 및 이전 버전 데이터 삭제 | 이전 옵션과 동일하지만, 이전 비밀 버전에 연결된 잠금이 없는 경우 해당 버전의 데이터도 영구적으로 삭제합니다.
비밀의 이전 버전에 |
현재 비밀 버전에 잠금 설정하기
Secrets Manager UI를 사용하여 시크릿의 현재 버전을 잠글 수 있습니다. 성공적인 요청은 선택한 시크릿의 현재 버전에 새 잠금을 첨부하거나, 이미 있는 경우 동일한 이름의 잠금을 대체합니다.
- 콘솔에서 메뉴 아이콘
> 리소스 목록을 클릭하십시오.
- 서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.
- Secrets Manager UI에서 시크릿 목록으로 이동하십시오.
- 잠그고 싶은 비밀이 있는 행에서 ‘작업’ 메뉴의
> ‘잠금’ > ‘잠금 생성’을 클릭합니다.
- 자물쇠를 쉽게 식별할 수 있도록 이름과 설명을 추가하세요.
- 잠글 버전 목록에서 현재를 선택하십시오.
- 선택사항: JSON 속성을 잠금에 첨부하십시오. 자동화된 플로우에 필요할 수 있는 정보를 보유하기 위해 각 잠금이 있는 JSON 오브젝트를 포함할 수 있습니다. 예를 들어, 이 잠금과 연관시킬 자원을 식별하는 키-값 쌍입니다.
- 선택사항: 배타적 잠금을 작성하십시오. 제공한 이름과 일치하는 다른 잠금을 제거하려면 이 옵션을 선택하십시오. 이전 버전의 시크릿에서 일치하는 잠금이 발견되면 새 잠금이 작성될 때 해당 잠금이 삭제됩니다.
- 선택 사항: 이전 버전의 데이터를 삭제합니다. 이전 시크릿 버전과 연관된 잠금이 없는 경우 이전 시크릿 버전의 데이터도 영구적으로 삭제하려면 이 옵션을 선택하십시오.
- 작성을 클릭하십시오. 선택한 시크릿 버전에 대해 새 잠금이 작성됩니다.
이전 시크릿 버전에 대한 잠금 작성
Secrets Manager UI를 사용하여 시크릿의 이전 버전을 잠글 수 있습니다. 성공적인 요청은 선택한 시크릿의 이전 버전에 새 잠금을 첨부하거나 동일한 이름의 잠금이 이미 있는 경우 이를 대체합니다.
- Secrets Manager UI에서 시크릿 목록으로 이동하십시오.
- 잠그고 싶은 비밀이 있는 행에서 ‘작업’ 메뉴의
> ‘잠금’ > ‘잠금 생성’을 클릭합니다.
- 자물쇠를 쉽게 식별할 수 있도록 이름과 설명을 추가하세요.
- 잠글 버전 목록에서 이전을 선택하십시오.
- 선택사항: JSON 속성을 잠금에 첨부하십시오. 자동화된 플로우에 필요할 수 있는 정보를 보유하기 위해 각 잠금이 있는 JSON 오브젝트를 포함할 수 있습니다. 예를 들어, 이 잠금과 연관시킬 자원을 식별하는 키-값 쌍입니다.
- 작성을 클릭하십시오. 선택한 시크릿 버전에 대해 새 잠금이 작성됩니다.
CLI를 사용하여 잠금 생성하기
Secrets Manager CLI를 사용하여 시크릿에 대해 최대 1000개의 잠금을 작성할 수 있습니다. 각 잠금을 사용하여 시크릿을 사용하는 단일 애플리케이션 또는 서비스를 표시할 수 있습니다.
하나 이상의 잠금을 연결한 후에는 시크릿이 잠긴 것으로 간주됩니다. 활성 페이로드 또는 시크릿 데이터를 포함하는 시크릿 버전에만 잠금을 적용할 수 있습니다.
단일 조작으로 새 잠금을 작성하고 이전 잠금을 제거하는 데 도움이 되도록 잠금 작성 시 선택적 모드를 지정할 수도 있습니다.
| 모드 | 설명 |
|---|---|
| 이전 잠금 제거 | 지정한 이름과 일치하는 다른 잠금을 제거합니다. 이전 버전의 시크릿에서 일치하는 잠금이 발견되면 새 잠금이 작성될 때 해당 잠금이 삭제됩니다.
예를 들어, 비밀의 이전 버전에 |
| 이전 잠금 제거 및 이전 버전 데이터 삭제 | 이전 옵션과 동일하지만, 이전 비밀 버전에 연결된 잠금이 없는 경우 해당 버전의 데이터도 영구적으로 삭제합니다.
비밀의 이전 버전에 |
현재 비밀 버전에 잠금 설정하기
Secrets Manager CLI를 사용하여 시크릿의 현재 버전을 잠글 수 있습니다. 성공적인 요청은 선택한 시크릿의 현재 버전에 새 잠금을 첨부하거나, 이미 있는 경우 동일한 이름의 잠금을 대체합니다.
Secrets Manager CLI 플러그인을 사용하여 시크릿의 현재 버전에 대한 잠금을 작성하려면 ibmcloud secrets-manager secret-locks-bulk-create 명령을 실행하십시오. 시크릿의 유형, 시크릿 ID및 모드를 지정할 수 있습니다.
ibmcloud secrets-manager secret-locks-bulk-create \
--id=exampleString \
--locks='[{"name": "lock-example-1", "description": "lock for consumer 1", "attributes": {"anyKey": "anyValue"}}]' \
--mode=remove_previous
API를 사용하여 잠금 생성하기
Secrets Manager API를 사용하여 시크릿에 대해 최대 1000개의 잠금을 작성할 수 있습니다. 각 잠금을 사용하여 시크릿을 사용하는 단일 애플리케이션 또는 이용자를 표시할 수 있습니다. 성공적인 요청은 시크릿에 새 잠금을 첨부하거나 동일한 이름의 잠금이 이미 있는 경우 이를 대체합니다.
하나 이상의 잠금을 연결한 후에는 시크릿이 잠긴 것으로 간주됩니다. 활성 페이로드 또는 시크릿 데이터를 포함하는 시크릿 버전에만 잠금을 적용할 수 있습니다.
단일 조작으로 새 잠금을 작성하고 이전 잠금을 제거하는 데 도움이 되도록 잠금 작성 시 선택적 모드를 지정할 수도 있습니다.
| 모드 | 조회 매개변수 | 설명 |
|---|---|---|
| 이전 잠금 제거 | mode=remove_previous |
지정한 이름과 일치하는 다른 잠금을 제거합니다. 이전 버전의 시크릿에서 일치하는 잠금이 발견되면 새 잠금이 작성될 때 해당 잠금이 삭제됩니다.
예를 들어, 비밀의 이전 버전에 |
| 이전 잠금 제거 | mode=remove_previous_and_delete |
remove_previous 옵션과 동일하지만, 이전 비밀 버전에 연결된 잠금이 없는 경우 해당 버전의 데이터도 영구적으로 삭제합니다.
비밀의 이전 버전에 |
현재 시크릿 버전에 대한 잠금 작성
다음 요청은 시크릿의 현재 버전에 대해 두 개의 잠금을 작성합니다. API를 호출할 때 ID 변수와 IAM 토큰을 Secrets Manager 인스턴스에 고유한 값으로 바꾸십시오.
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"locks": [
{
"name": "lock-1",
"description": "Lock for consumer 1.",
"attributes": {
"key": "value"
}
},
{
"name": "lock-2",
"description": "Lock for consumer 2.",
"attributes": {
"key": "value"
}
}
]
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/locks_bulk"
자동화된 플로우를 빌드하는 경우 attributes 오브젝트를 사용하여 시크릿에 대한 각 잠금으로 키-값 데이터를 지정할 수 있습니다. 예를 들어, ID 또는 클라우드 리소스 이름 (CRN) 과 같은 리소스 ID를 포함할 수 있습니다.
성공적인 응답은 다른 메타데이터와 함께 새 잠금에 대한 세부사항을 리턴합니다.
{
"secret_id": "0cf4addb-7a90-410b-a3a7-a15bbe2b7909",
"secret_group_id": "d8371728-95c8-4c12-b2af-1af98adb9e41",
"versions": [
{
"version_id": "7bf3814d-58f8-4df8-9cbd-f6860e4ca973",
"version_alias": "current",
"locks": [
"lock-3",
"lock-4"
],
"payload_available": true
},
{
"version_id": "5bf89b0c-df55-c8d5-7ad6-8816951c6784",
"version_alias": "previous",
"locks": [
"lock-1",
"lock-2"
],
"payload_available": true
}
]
}
필수 및 선택적 요청 매개변수에 대한 자세한 정보는 API 참조를 확인하십시오.
이전 시크릿 버전에 대한 잠금 작성
다음 요청은 시크릿의 이전 버전에 대해 두 개의 잠금을 작성합니다. API를 호출할 때 ID 변수와 IAM 토큰을 Secrets Manager 인스턴스에 고유한 값으로 바꾸십시오.
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"locks": [
{
"name": "lock-1",
"description": "Lock for consumer 1.",
"attributes": {
"key": "value"
}
},
{
"name": "lock-2",
"description": "Lock for consumer 2.",
"attributes": {
"key": "value"
}
}
]
}' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/versions/{version_id}/locks_bulk"
성공적인 응답은 다른 메타데이터와 함께 새 잠금에 대한 세부사항을 리턴합니다.
{
"secret_id": "0cf4addb-7a90-410b-a3a7-a15bbe2b7909",
"secret_group_id": "d8371728-95c8-4c12-b2af-1af98adb9e41",
"versions": [
{
"version_id": "7bf3814d-58f8-4df8-9cbd-f6860e4ca973",
"version_alias": "current",
"locks": [
"lock-3",
"lock-4"
],
"payload_available": true
},
{
"version_id": "5bf89b0c-df55-c8d5-7ad6-8816951c6784",
"version_alias": "previous",
"locks": [
"lock-1",
"lock-2"
],
"payload_available": true
}
]
}
필수 및 선택적 요청 매개변수에 대한 자세한 정보는 API 참조를 확인하십시오.
시크릿 잠금 해제
비밀은 잠금 해제된 것으로 간주되며 관련된 모든 잠금이 제거된 후에만 수정하거나 삭제할 수 있습니다. Secrets Manager UI 또는 API를 사용하여 시크릿과 연관된 잠금을 삭제할 수 있습니다.
UI에서 잠금 삭제하기
Secrets Manager UI를 사용하여 기존 시크릿에 첨부된 잠금을 삭제할 수 있습니다.
- 콘솔에서 메뉴 아이콘
> 리소스 목록을 클릭하십시오.
- 서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.
- Secrets Manager UI에서 시크릿 목록으로 이동하십시오.
- 업데이트하려는 비밀이 있는 행에서 ‘작업’ 메뉴의
> ‘잠금’을 클릭합니다.
- 삭제하려는 잠금 항목이 있는 행에서 [작업] 메뉴의
클릭한 다음 [삭제]를 클릭합니다.
- 삭제를 확인하려면 시크릿의 이름을 입력하십시오. 삭제를 클릭하십시오.
이제 잠금이 삭제되었습니다. 시크릿을 완전히 잠금 해제하기 위해 모든 기존 잠금을 제거할 수 있습니다.
API를 사용하여 잠금 삭제하기
Secrets Manager API를 사용하여 특정 시크릿 버전과 연관된 하나 이상의 잠금을 삭제할 수 있습니다.
성공적인 요청은 사용자가 지정하는 잠금을 삭제합니다. 모든 잠금을 제거하기 위해 요청 본문에서 {"locks": ["*"]} 를 전달할 수 있습니다. 그렇지 않으면, 삭제하려는 잠금의 이름을 지정하십시오. 예를 들어, {"locks": ["lock-1", "lock-2"]}입니다.
시크릿에 잠금이 포함되어 있는지 여부를 이해하려면 시크릿 메타데이터의 일부로 리턴되는 locks_total 필드를 확인하십시오.
curl -X DELETE
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{secret_id}/versions/{id}/locks_bulk?name=[ "lock-example-1" ]"
필수 및 선택적 요청 매개변수에 대한 자세한 정보는 API 참조를 확인하십시오.