Secret Manager를 사용하여 보안 비밀 만들기 및 액세스

에서 Secret Manager를 사용하여 보안 비밀을 만들고 액세스하는 방법을 알아봅니다. Google Cloud


콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 Google Cloud 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. Secret Manager API를 사용 설정합니다(프로젝트당 한 번).
  2. 프로젝트, 폴더 또는 조직에 Secret Manager 관리자 역할(roles/secretmanager.admin)을 할당합니다.
  3. 다음 방법 중 하나를 사용하여 Secret Manager API에 인증합니다.

    • 클라이언트 라이브러리를 사용하여 Secret Manager API에 액세스하는 경우 애플리케이션 기본 사용자 인증 정보를 설정합니다.
    • Google Cloud CLI를 사용하여 Secret Manager API에 액세스하는 경우 Google Cloud CLI 사용자 인증 정보를 사용하여 인증합니다.
    • REST 호출을 인증하려면 Google Cloud CLI 사용자 인증 정보 또는 애플리케이션 기본 사용자 인증 정보를 사용합니다.

보안 비밀을 만들고 보안 비밀 버전에 액세스

다음 예시에서는 보안 비밀을 만들고 보안 비밀 버전 콘텐츠에 액세스하는 방법을 보여줍니다.

콘솔

보안 비밀 및 보안 비밀 버전을 만들려면 다음 안내를 따르세요.

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

    Secret Manager 페이지로 이동

  2. Secret Manager 페이지에서 보안 비밀 만들기를 클릭합니다.

  3. 보안 비밀 만들기 페이지에서 이름 아래에 my-secret를 입력합니다.

  4. 보안 비밀 값 필드에 my super secret data를 입력합니다.

  5. 보안 비밀 만들기 버튼을 클릭합니다.

보안 비밀 버전의 콘텐츠에 액세스하려면 다음 안내를 따르세요.

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

    Secret Manager 페이지로 이동

  2. Secret Manager 페이지에서 my-secret을 클릭합니다.

  3. 보안 비밀 세부정보 페이지의 버전 표에서 버전 1을 찾습니다.

  4. 작업 열에서 더보기를 클릭합니다.

  5. 메뉴에서 보안 비밀 값 보기를 클릭합니다.

  6. 보안 비밀 값이 표시된 대화상자가 나타납니다. 완료를 클릭하여 대화상자를 닫습니다.

gcloud

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

보안 비밀을 만들고 첫 번째 보안 비밀 버전의 콘텐츠로 문자열을 저장하려면 다음을 실행합니다.

$ echo -n "my super secret data" | gcloud secrets create my-secret \
    --replication-policy="replication-policy" \
    --data-file=-

여기서 replication-policyautomatic 또는 user-managed 중 하나입니다.

특정 보안 비밀 버전의 콘텐츠에 액세스하려면 다음을 실행합니다.

$ gcloud secrets versions access 1 --secret="my-secret"

최신 보안 비밀 버전의 콘텐츠에 액세스하려면 다음을 실행합니다.

$ gcloud secrets versions access latest --secret="my-secret"

C#

이 코드를 실행하려면 먼저 C# 개발 환경을 설정하고 Secret Manager C# SDK를 설치합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.


using System;
using System.Text;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.SecretManager.V1;
using Google.Protobuf;

public class QuickstartSample
{
    public void Quickstart(string projectId = "my-project", string secretId = "my-secret")
    {
        // Create the client.
        SecretManagerServiceClient client = SecretManagerServiceClient.Create();

        // Build the parent project name.
        ProjectName projectName = new ProjectName(projectId);

        // Build the secret to create.
        Secret secret = new Secret
        {
            Replication = new Replication
            {
                Automatic = new Replication.Types.Automatic(),
            },
        };

        Secret createdSecret = client.CreateSecret(projectName, secretId, secret);

        // Build a payload.
        SecretPayload payload = new SecretPayload
        {
            Data = ByteString.CopyFrom("my super secret data", Encoding.UTF8),
        };

        // Add a secret version.
        SecretVersion createdVersion = client.AddSecretVersion(createdSecret.SecretName, payload);

        // Access the secret version.
        AccessSecretVersionResponse result = client.AccessSecretVersion(createdVersion.SecretVersionName);

        // Print the results
        //
        // WARNING: Do not print secrets in production environments. This
        // snippet is for demonstration purposes only.
        string data = result.Payload.Data.ToStringUtf8();
        Console.WriteLine($"Plaintext: {data}");
    }
}

Go

이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Secret Manager Go SDK를 설치합니다. Compute Engine 또는 GKE에서는 cloud-platform 범위로 인증해야 합니다.


// Sample quickstart is a basic program that uses Secret Manager.
package main

import (
	"context"
	"fmt"
	"log"

	secretmanager "cloud.google.com/go/secretmanager/apiv1"
	"cloud.google.com/go/secretmanager/apiv1/secretmanagerpb"
)

func main() {
	// GCP project in which to store secrets in Secret Manager.
	projectID := "your-project-id"

	// Create the client.
	ctx := context.Background()
	client, err := secretmanager.NewClient(ctx)
	if err != nil {
		log.Fatalf("failed to setup client: %v", err)
	}
	defer client.Close()

	// Create the request to create the secret.
	createSecretReq := &secretmanagerpb.CreateSecretRequest{
		Parent:   fmt.Sprintf("projects/%s", projectID),
		SecretId: "my-secret",
		Secret: &secretmanagerpb.Secret{
			Replication: &secretmanagerpb.Replication{
				Replication: &secretmanagerpb.Replication_Automatic_{
					Automatic: &secretmanagerpb.Replication_Automatic{},
				},
			},
		},
	}

	secret, err