리전 보안 비밀의 만료 날짜 설정

이 페이지에서는 새 보안 비밀 또는 기존 보안 비밀의 만료일을 설정하고, 기존 보안 비밀의 만료일을 변경하고, 보안 비밀에서 이전에 설정된 만료일을 삭제하는 방법을 설명합니다.

개요

기본적으로 Secret Manager에 저장된 보안 비밀은 사용자가 삭제할 때까지 존재합니다. 보안 비밀을 알려진 제한된 시간 동안만 저장해야 하는 경우 만료 시간을 연결할 수 있습니다. 보안 비밀의 구성된 만료 시점에는 보안 비밀이 자동으로 삭제됩니다.

보안 비밀을 삭제해야 한다는 요구사항이 없으면 IAM 조건 또는 사용 중지된 버전 상태를 사용하여 안전한 방식으로 액세스 권한을 취소하는 것이 좋습니다.

만료 시간을 타임스탬프 또는 기간으로 입력할 수 있습니다. 보안 비밀 메타데이터를 가져오면 만료는 지정된 방법에 관계없이 항상 타임스탬프로 반환됩니다.

언제든지 보안 비밀에서 만료 시간을 추가, 업데이트, 삭제할 수 있습니다.

제한사항

  • 보안 비밀 만료까지 남은 시간은 60초 미만이거나 100년을 초과할 수 없습니다.

만료되는 보안 비밀을 안전하게 사용

Secret Manager에서 보안 비밀이 만료되면 돌이킬 수 없이 삭제됩니다. 곧 만료되는 보안 비밀을 감지하는 가장 좋은 방법은 IAM 조건을 사용하여 만료 전에 보안 비밀을 사용하는 계정에서 권한을 삭제하는 것입니다.

보안 비밀에 대한 액세스를 효과적으로 관리하려면 부여된 권한에 시간 기반 조건을 설정하세요.

  • 만료일 설정: 보안 비밀 자체가 만료되기 직전에 권한이 만료되어야 합니다. 이렇게 하면 보안 비밀을 예기치 않게 계속 사용하고 있을 수 있는 워크플로 또는 프로세스를 식별할 수 있습니다.

  • 서비스 중단 모니터링: 권한이 취소된 후 워크플로가 작동하지 않으면 액세스 권한을 빠르게 복원하여 영향을 최소화할 수 있습니다.

  • 필요에 따라 조정: 시간이 더 필요한 경우 보안 비밀의 만료일을 연장하거나 더 이상 필요하지 않은 경우 보안 비밀을 완전히 삭제할 수 있습니다.

이 접근 방식을 사용하면 보안 비밀에 대한 액세스를 엄격하게 제어하고 필요한 기간 동안만 사용할 수 있도록 하여 무단 액세스 또는 오용의 위험을 줄일 수 있습니다.

예를 들어 서비스 계정이 30일 동안 매일 보안 비밀에 액세스해야 하는 시나리오를 생각해 보세요. 보안 비밀이 생성된 후 60일 후에 만료되도록 구성할 수 있습니다. 이렇게 하면 예상 사용량 이후 버퍼 기간이 생깁니다. 조건부 IAM 바인딩을 설정하여 45일 동안 서비스 계정에 보안 비밀 접근자 역할을 부여할 수도 있습니다. 서비스 계정이 45일 후에 보안 비밀에 액세스하려고 하면 권한이 거부됩니다. 이 보안 비밀을 사용하는 모든 워크플로가 작동을 중지합니다. 관리자는 보안 비밀 접근자 역할을 서비스 계정에 다시 부여하여 액세스 권한을 빠르게 복원할 수 있습니다. 이렇게 하면 보안 비밀 자체가 15일 동안 삭제되지 않으므로 예상되는 30일 기간이 지난 후에도 보안 비밀이 필요한 이유를 조사할 수 있습니다.

또한 곧 만료되는 보안 비밀의 로그 경고를 기반으로 알림을 만들 수 있습니다. 자세한 내용은 이 문서의 만료 시간 로깅 섹션을 참고하세요.

타임스탬프 및 기간 지정

  • 타임스탬프 값은 RFC 3339 형식이어야 합니다(예: 2100-01-01T09:00:00-05:00).

  • 기간 값은 s 접미사를 포함한 시간(초) 형식이어야 합니다(예: 86400s).

보안 비밀의 만료일 설정

Google Cloud 콘솔, Google Cloud CLI 또는 Secret Manager API를 사용하여 보안 비밀의 만료일과 시간을 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭한 후 리전 보안 비밀 만들기를 클릭합니다.

  3. 리전 보안 비밀 만들기 페이지에서 이름 필드에 보안 비밀 이름을 입력합니다.

  4. 보안 비밀 값을 입력합니다(예: abcd1234). 또한 파일 업로드 옵션을 사용하여 보안 비밀 값이 포함된 텍스트 파일을 업로드할 수 있습니다. 이 작업은 보안 비밀 버전을 자동으로 만듭니다.

  5. 리전 목록에서 리전 보안 비밀을 저장하려는 위치를 선택합니다.

  6. 만료로 이동한 다음 만료일 설정 체크박스를 선택합니다.

  7. 월/일/년, 시간:분 AM/PM 형식(예: 7/31/20, 1:00 AM)으로 만료일 및 시간을 입력합니다. 날짜 및 시간 선택 도구를 사용하여 만료일과 시간을 입력할 수도 있습니다.

  8. 보안 비밀 만들기를 클릭합니다.

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\""
}

보안 비밀의 만료일 업데이트

보안 비밀의 만료일과 시간을 업데이트하려면 다음 방법 중 하나를 사용하세요.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭합니다.

  3. 보안 비밀을 수정하려면 목록에서 보안 비밀을 찾은 다음 보안 비밀과 연결된 작업 메뉴를 클릭합니다. 작업 메뉴에서 수정을 클릭합니다.

  4. 만료 섹션으로 이동합니다. 만료 날짜 및 시간을 업데이트하고 비밀번호 업데이트를 클릭합니다.

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\""
}

보안 비밀의 만료일 삭제

보안 비밀의 만료일과 시간을 삭제하려면 다음 방법 중 하나를 사용하세요.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭합니다.

  3. 보안 비밀을 수정하려면 목록에서 보안 비밀을 찾은 다음 보안 비밀과 연결된 작업 메뉴를 클릭합니다. 작업 메뉴에서 수정을 클릭합니다.

  4. 만료 섹션으로 이동합니다. 만료일 설정 체크박스를 선택 해제한 다음 보안 비밀 업데이트를 클릭합니다.

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 빠른 시작 가이드를 참조하세요. 로그 기반 측정항목을 만들고 이를 통해 예정된 만료에 대한 알림을 만들 수 있습니다.

다음 단계