보안 비밀 만료일 설정

이 주제에서는 Secret Manager에서 보안 비밀의 만료일을 설정하는 방법을 설명합니다. 이 주제에서는 보안 비밀에 설정된 만료일을 업데이트하거나 삭제하는 방법도 설명합니다.

개요

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

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

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

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

제한사항

  • 보안 비밀 만료는 Secret Manager v1 API 및 gcloud 명령줄 도구에서만 사용할 수 있습니다.

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

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

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

이렇게 하려면 보안 비밀에 대한 권한을 부여할 때 binding에 시간 기반 조건을 연결합니다. binding은 보안 비밀이 더 이상 사용되지 않을 것으로 예상되면 만료되어야 하지만 보안 비밀이 만료되기 전에 삭제된 권한을 확인할 수 있어야 합니다. 더 이상 보안 비밀을 사용하지 않을 것으로 판단된 워크플로가 권한이 취소된 후 중단된 경우 권한을 다시 추가하여 빠르게 완화할 수 있습니다. 시간이 더 필요한 경우 보안 비밀 만료 시간을 업데이트하거나 삭제할 수 있습니다.

예를 들어 서비스 계정이 30일 동안 보안 비밀에 매일 액세스한다고 가정해 보겠습니다. 그러면 보안 비밀 만료 시간을 생성 후 60일로 설정하고 조건부 IAM binding을 사용하여 45일 동안 서비스 계정에 보안 비밀 접근자 역할을 부여할 수 있습니다. 서비스 계정이 45일 후에 보안 비밀에 액세스하려고 하면 권한 거부 오류가 반환되고 보안 비밀을 필요로 하는 워크플로가 중단됩니다. 그런 다음 보안 비밀 자체는 15일 이상 삭제되지 않으므로 관리자는 조사 중에 빠르게 완화할 수 있도록 보안 비밀 접근자 역할을 서비스 계정에 다시 부여할 수 있습니다.

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

타임스탬프 및 기간 지정

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

  • 기간 값은 's' 서픽스를 포함한 시간(초) 형식이어야 합니다(예: 86400s).

만료되는 보안 비밀 만들기

타임스탬프를 사용하여 만료되는 보안 비밀을 만듭니다.

gcloud

명령줄에서 Secret Manager를 사용하려면 먼저 Google Cloud CLI 버전 338.0.0 이상을 설치하거나 업그레이드합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --expire-time "TIMESTAMP"

API

이 예시에서는 curl을 사용하여 API를 사용하는 방법을 보여줍니다. gcloud auth print-access-token을 사용하여 액세스 토큰을 생성할 수 있습니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "expire_time": "TIMESTAMP"
}
EOF

기간을 사용하여 만료되는 보안 비밀을 만듭니다.

gcloud

명령줄에서 Secret Manager를 사용하려면 먼저 Google Cloud CLI 버전 338.0.0 이상을 설치하거나 업그레이드합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --ttl "DURATION"

API

이 예시에서는 curl을 사용하여 API를 사용하는 방법을 보여줍니다. gcloud auth print-access-token을 사용하여 액세스 토큰을 생성할 수 있습니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication": {"automatic": {}},
  "ttl": "DURATION"
}
EOF

보안 비밀 만료 시간 업데이트

보안 비밀에는 이미 만료 시간이 있는지 여부에 관계없이 새 만료가 적용될 수 있습니다. 각 보안 비밀에는 한 번에 하나의 만료 시간만 구성할 수 있습니다. 이미 보안 비밀이 있는 경우 만료 시간을 업데이트하면 기존 만료 시간을 덮어씁니다.

타임스탬프를 사용하여 보안 비밀 만료 시간을 업데이트합니다.

gcloud

명령줄에서 Secret Manager를 사용하려면 먼저 Google Cloud CLI 버전 338.0.0 이상을 설치하거나 업그레이드합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

gcloud secrets update "SECRET_ID" \
    --expire-time "TIMESTAMP"

API

이 예시에서는 curl을 사용하여 API를 사용하는 방법을 보여줍니다. gcloud auth print-access-token을 사용하여 액세스 토큰을 생성할 수 있습니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "expire_time": "TIMESTAMP"
}
EOF

기간을 사용하여 보안 비밀 만료 시간을 업데이트합니다.

gcloud

명령줄에서 Secret Manager를 사용하려면 먼저 Google Cloud CLI 버전 338.0.0 이상을 설치하거나 업그레이드합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

gcloud secrets update "SECRET_ID" \
    --ttl "DURATION"

API

이 예시에서는 curl을 사용하여 API를 사용하는 방법을 보여줍니다. gcloud auth print-access-token을 사용하여 액세스 토큰을 생성할 수 있습니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "ttl": "DURATION"
}
EOF

보안 비밀 만료 시간 삭제

gcloud

명령줄에서 Secret Manager를 사용하려면 먼저 Google Cloud CLI 버전 338.0.0 이상을 설치하거나 업그레이드합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

gcloud secrets update "SECRET_ID" \
    --remove-expiration

API

이 예시에서는 curl을 사용하여 API를 사용하는 방법을 보여줍니다. gcloud auth print-access-token을 사용하여 액세스 토큰을 생성할 수 있습니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.

updateMaskexpire_time 또는 ttl을 포함하지만 값을 입력하지 않으면 만료 시간이 삭제됩니다.

curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
    --request "PATCH" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary '{}'

만료 시간 로깅

Cloud 감사 로그는 보안 비밀이 자동으로 만료될 때 생성되지 않습니다. 대신 Secret Manager는 보안 비밀 만료가 될 때까지 특정 간격으로 Secret Manager Secret 리소스에 로그를 작성합니다.

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

다음 단계