이 페이지에서는 새 보안 비밀 또는 기존 보안 비밀의 만료일을 설정하고, 기존 보안 비밀의 만료일을 변경하고, 보안 비밀에서 이전에 설정된 만료일을 삭제하는 방법을 설명합니다.
개요
기본적으로 Secret Manager에 저장된 보안 비밀은 사용자가 삭제할 때까지 존재합니다. 보안 비밀을 알려진 제한된 시간 동안만 저장해야 하는 경우 만료 시간을 연결할 수 있습니다. 보안 비밀의 구성된 만료 시점에는 보안 비밀이 자동으로 삭제됩니다.
보안 비밀을 삭제해야 한다는 요구사항이 없으면 IAM 조건 또는 사용 중지된 버전 상태를 사용하여 안전한 방식으로 액세스 권한을 취소하는 것이 좋습니다.
만료 시간을 타임스탬프 또는 기간으로 입력할 수 있습니다. 보안 비밀 메타데이터를 가져오면 만료는 지정된 방법에 관계없이 항상 타임스탬프로 반환됩니다.
언제든지 보안 비밀에서 만료 시간을 추가, 업데이트, 삭제할 수 있습니다.
제한사항
-
보안 비밀 만료까지 남은 시간은 60초 미만이거나 100년을 초과할 수 없습니다.
만료되는 보안 비밀을 안전하게 사용
Secret Manager에서 보안 비밀이 만료되면 돌이킬 수 없이 삭제됩니다. 곧 만료되는 보안 비밀을 감지하는 가장 좋은 방법은 IAM 조건을 사용하여 만료 전에 보안 비밀을 사용하는 계정에서 권한을 삭제하는 것입니다.
보안 비밀에 대한 액세스를 효과적으로 관리하려면 부여된 권한에 시간 기반 조건을 설정하세요.
-
만료일 설정: 보안 비밀 자체가 만료되기 직전에 권한이 만료되어야 합니다. 이렇게 하면 보안 비밀을 예기치 않게 계속 사용하고 있을 수 있는 워크플로 또는 프로세스를 식별할 수 있습니다.
-
서비스 중단 모니터링: 권한이 취소된 후 워크플로가 작동하지 않으면 액세스 권한을 빠르게 복원하여 영향을 최소화할 수 있습니다.
-
필요에 따라 조정: 시간이 더 필요한 경우 보안 비밀의 만료일을 연장하거나 더 이상 필요하지 않은 경우 보안 비밀을 완전히 삭제할 수 있습니다.
또한 곧 만료되는 보안 비밀의 로그 경고를 기반으로 알림을 만들 수 있습니다. 자세한 내용은 이 문서의 만료 시간 로깅 섹션을 참고하세요.
타임스탬프 및 기간 지정
-
타임스탬프 값은 RFC 3339 형식이어야 합니다(예:
2100-01-01T09:00:00-05:00
). -
기간 값은 s 접미사를 포함한 시간(초) 형식이어야 합니다(예:
86400s
).
보안 비밀의 만료일 설정
Google Cloud 콘솔, Google Cloud CLI 또는 Secret Manager API를 사용하여 보안 비밀의 만료일과 시간을 설정할 수 있습니다.
콘솔
-
Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.
-
Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭한 후 리전 보안 비밀 만들기를 클릭합니다.
-
리전 보안 비밀 만들기 페이지에서 이름 필드에 보안 비밀 이름을 입력합니다.
-
보안 비밀 값을 입력합니다(예:
abcd1234
). 또한 파일 업로드 옵션을 사용하여 보안 비밀 값이 포함된 텍스트 파일을 업로드할 수 있습니다. 이 작업은 보안 비밀 버전을 자동으로 만듭니다. -
리전 목록에서 리전 보안 비밀을 저장하려는 위치를 선택합니다.
-
만료로 이동한 다음 만료일 설정 체크박스를 선택합니다.
-
월/일/년, 시간:분 AM/PM 형식(예:
7/31/20, 1:00 AM
)으로 만료일 및 시간을 입력합니다. 날짜 및 시간 선택 도구를 사용하여 만료일과 시간을 입력할 수도 있습니다. -
보안 비밀 만들기를 클릭합니다.
gcloud
타임스탬프를 사용하여 만료되는 보안 비밀 만들기
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- LOCATION: 보안 비밀의 Google Cloud 위치
- TIMESTAMP: RFC 3339 형식의 만료 시간(예:
2100-01-01T09:00:00-05:00
)
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --expire-time "TIMESTAMP"
Windows(PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --expire-time "TIMESTAMP"
Windows(cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --expire-time "TIMESTAMP"
기간을 사용하여 만료되는 보안 비밀 만들기
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- LOCATION: 보안 비밀의 Google Cloud 위치
- DURATION: 만료 기간(초)(예:
86400s
)
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --ttl "DURATION"
Windows(PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --ttl "DURATION"
Windows(cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --ttl "DURATION"
REST
타임스탬프를 사용하여 만료되는 보안 비밀 만들기
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치
- PROJECT_ID: Google Cloud 프로젝트 ID
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- TIMESTAMP: RFC 3339 형식의 만료 시간(예:
2100-01-01T09:00:00-05:00
)
HTTP 메서드 및 URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID
JSON 요청 본문:
{"expire_time": "TIMESTAMP"}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
기간을 사용하여 만료되는 보안 비밀 만들기
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치
- PROJECT_ID: Google Cloud 프로젝트 ID
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- DURATION: 만료 기간(초)(예:
86400s
)
HTTP 메서드 및 URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
JSON 요청 본문:
{"ttl": "DURATION"}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
보안 비밀의 만료일 업데이트
보안 비밀의 만료일과 시간을 업데이트하려면 다음 방법 중 하나를 사용하세요.
콘솔
-
Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.
-
Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭합니다.
-
보안 비밀을 수정하려면 목록에서 보안 비밀을 찾은 다음 보안 비밀과 연결된
작업 메뉴를 클릭합니다. 작업 메뉴에서 수정을 클릭합니다. -
만료 섹션으로 이동합니다. 만료 날짜 및 시간을 업데이트하고 비밀번호 업데이트를 클릭합니다.
gcloud
타임스탬프를 사용하여 보안 비밀 만료 시간 업데이트
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- LOCATION: 보안 비밀 데이터를 저장한 Google Cloud 리전
- TIMESTAMP: RFC 3339 형식의 만료 시간(예:
2100-01-01T09:00:00-05:00
)
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --expire-time "TIMESTAMP"
Windows(PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --expire-time "TIMESTAMP"
Windows(cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --expire-time "TIMESTAMP"
기간을 사용하여 보안 비밀 만료 시간 업데이트
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- LOCATION: 보안 비밀의 Google Cloud 위치
- DURATION: 만료 기간(초)(예:
86400s
)
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --ttl "DURATION"
Windows(PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --ttl "DURATION"
Windows(cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --ttl "DURATION"
REST
타임스탬프를 사용하여 보안 비밀 만료 시간 업데이트
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치
- PROJECT_ID: Google Cloud 프로젝트 ID
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- TOKEN: 자체 Oauth2.0 액세스 토큰
- TIMESTAMP: RFC 3339 형식의 만료 시간(예:
2100-01-01T09:00:00-05:00
)
HTTP 메서드 및 URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time
JSON 요청 본문:
{"expire_time": "TIMESTAMP"}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
기간을 사용하여 보안 비밀 만료 시간 업데이트
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치
- PROJECT_ID: Google Cloud 프로젝트 ID
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- DURATION: 만료 기간(초)(예:
86400s
)
HTTP 메서드 및 URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl
JSON 요청 본문:
{"ttl": "DURATION"}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "expireTime": "2024-09-04T09:25:39Z", "etag": "\"162143305d282d\"" }
보안 비밀의 만료일 삭제
보안 비밀의 만료일과 시간을 삭제하려면 다음 방법 중 하나를 사용하세요.
콘솔
-
Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.
-
Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭합니다.
-
보안 비밀을 수정하려면 목록에서 보안 비밀을 찾은 다음 보안 비밀과 연결된
작업 메뉴를 클릭합니다. 작업 메뉴에서 수정을 클릭합니다. -
만료 섹션으로 이동합니다. 만료일 설정 체크박스를 선택 해제한 다음 보안 비밀 업데이트를 클릭합니다.
gcloud
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- LOCATION: 보안 비밀의 Google Cloud 위치
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --remove-expiration
Windows(PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-expiration
Windows(cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-expiration
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치
- PROJECT_ID: Google Cloud 프로젝트 ID
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
- TOKEN: 자체 Oauth2.0 액세스 토큰
HTTP 메서드 및 URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl
JSON 요청 본문:
{}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$headers = @{ "Authorization" = "Bearer TOKEN" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-09-04T03:58:38.200877Z", "etag": "\"162143305d282d\"" }
만료 시간 로깅
Cloud 감사 로그는 보안 비밀이 자동으로 만료될 때 생성되지 않습니다. 대신 Secret Manager는 보안 비밀 만료가 될 때까지 특정 간격으로 Secret Manager 보안 비밀 리소스에 로그를 작성합니다.
로그 타이밍 | 보안 비밀 이벤트 유형 |
---|---|
만료 30일 전 | EXPIRES_IN_30_DAYS |
만료 7일 전 | EXPIRES_IN_7_DAYS |
만료 1일 전 | EXPIRES_IN_1_DAY |
만료 6시간 전 | EXPIRES_IN_6_HOURS |
만료 1시간 전 | EXPIRES_IN_1_HOUR |
만료 시 | EXPIRED |
이러한 로그를 보는 방법은 Logging 빠른 시작 가이드를 참조하세요. 로그 기반 측정항목을 만들고 이를 통해 예정된 만료에 대한 알림을 만들 수 있습니다.