Secrets Management API

Secrets Management API

Note Grafana 12 이상에서 사용할 수 있어요. 이 API는 새 Grafana API 구조를 준수해요. 더 배우려면 Grafana의 API 구조 문서를 참고해요. 이 문서는 API의 최신 버전을 포함하지 않을 수 있어요. 사용 가능한 최신 엔드포인트 목록은 Swagger의 secret.grafana.app/v1을 참고해요.

Grafana Secrets Management API를 사용하면 Grafana 인스턴스 내의 다른 서비스와 애플리케이션이 사용하는 시크릿을 관리할 수 있어요.

Caution 이 API는 현재 공개 미리보기 상태이며 변경될 수 있어요.

출처: 문서

본문

Grafana Secrets Management API를 사용하면 Grafana 인스턴스 내의 다른 서비스와 애플리케이션이 사용하는 시크릿을 관리할 수 있어요.

Caution 이 API는 현재 공개 미리보기 상태이며 변경될 수 있어요.

요구 사항 (Requirements)

Grafana Enterprise를 실행한다면 일부 엔드포인트에 특정 권한이 필요해요. 자세한 내용은 Role-based access control permissions을 참고해요.

복호화자 (Decrypters)

decrypters 필드는 보안 값이 어떤 서비스와 앱이 시크릿 값을 복호화할 수 있는지 알 수 있게 해주는 allowlist예요.

현재 사용 가능한 decrypters:

  • k6-cloud (Grafana Cloud k6용)
  • provisioning.grafana.app (GitSync/Provisioning용)
  • synthetic-monitoring (Synthetic Monitoring 검사용)

보안 값 만들기 (Create a secure value)

POST /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues

새 보안 값을 만들어요.

URL 매개변수

  • namespace: 어떤 네임스페이스를 사용할지에 대해 더 읽으려면 API 개요를 참고해요.

요청 본문

  • metadata.name: Grafana 고유 식별자. 제공하고 싶지 않다면 대신 metadata.generateName을 무작위 생성 uid에 원하는 접두사로 설정해요(빈 문자열일 수 없음).
  • spec.description: 이 보안 값의 목적을 설명하는 짧은 설명. 필수. 최대 25자.
  • spec.value: 저장할 시크릿 값. 필수. 최대 24576바이트.
  • spec.decrypters: 이 보안 값을 복호화할 수 있는 서비스 목록. 최대 64개 항목. 지원되는 값 목록은 decrypters의 주석을 참고해요.

필수 권한

설명은 소개의 주석을 참고해요.

테이블 펼치기

Action Scope
secret.securevalues:create secret.securevalues:*

예제 생성 요청 (Example create request):

http

POST /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>

{
  "metadata": {
    "name": "api-key"
  },
  "spec": {
    "description": "External API Key",
    "value": "secret-api-key-12345",
    "decrypters": ["synthetic-monitoring"]
  }
}

예제 응답 (Example response):

http

HTTP/1.1 201 Created
Content-Type: application/json; charset=UTF-8
Content-Length: 343

{
  "apiVersion": "secret.grafana.app/v1beta1",
  "kind": "SecureValue",
  "metadata": {
    "name": "api-key",
    "namespace": "default",
    "uid": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
    "creationTimestamp": "2024-01-15T10:35:00Z"
  },
  "spec": {
    "description": "External API Key",
    "decrypters": ["synthetic-monitoring"]
  },
  "status": {}
}

상태 코드:

  • 201 – Created
  • 400 – Errors (invalid JSON, missing or invalid fields, etc)
  • 401 – Unauthorized
  • 403 – Access denied
  • 409 – Conflict (secure value with the same name already exists)

Note spec.value 필드는 API 엔드포인트에서 절대 반환되지 않아요. 사용자는 시크릿을 복호화할 수 없어요.

보안 값 나열 (List secure values)

GET /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues

네임스페이스의 모든 보안 값을 나열해요.

URL 매개변수

  • namespace: 어떤 네임스페이스를 사용할지에 대해 더 읽으려면 API 개요를 참고해요.

쿼리 매개변수

  • labelSelector: 레이블로 보안 값을 필터링해요.

필수 권한

설명은 소개의 주석을 참고해요.

테이블 펼치기

Action Scope
secret.securevalues:read secret.securevalues:*

예제 나열 요청 (Example list request):

http

GET /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>

예제 응답 (Example response):

http

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 383

{
  "apiVersion": "secret.grafana.app/v1beta1",
  "kind": "SecureValueList",
  "metadata": {
    "resourceVersion": "12345"
  },
  "items": [
    {
      "apiVersion": "secret.grafana.app/v1beta1",
      "kind": "SecureValue",
      "metadata": {
        "name": "database-password",
        "namespace": "default",
        "creationTimestamp": "2024-01-15T10:30:00Z"
      },
      "spec": {
        "description": "Production DB Password",
        "decrypters": ["synthetic-monitoring"]
      },
      "status": {}
    }
  ]
}

상태 코드:

  • 200 – OK
  • 401 – Unauthorized
  • 403 – Access denied

보안 값 가져오기 (Get a secure value)

GET /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues/:name

특정 보안 값의 세부 정보를 가져와요. 시크릿 값은 반환하지 않아요.

URL 매개변수

  • namespace: 어떤 네임스페이스를 사용할지에 대해 더 읽으려면 API 개요를 참고해요.
  • name: 보안 값의 이름.

필수 권한

설명은 소개의 주석을 참고해요.

테이블 펼치기

Action Scope
secret.securevalues:read secret.securevalues:*

예제 가져오기 요청 (Example get request):

http

GET /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues/api-key HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>

예제 응답 (Example response):

http

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 294

{
  "apiVersion": "secret.grafana.app/v1beta1",
  "kind": "SecureValue",
  "metadata": {
    "name": "api-key",
    "namespace": "default",
    "uid": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
    "creationTimestamp": "2024-01-15T10:35:00Z"
  },
  "spec": {
    "description": "External API Key",
    "decrypters": ["synthetic-monitoring"]
  },
  "status": {}
}

상태 코드:

  • 200 – OK
  • 401 – Unauthorized
  • 403 – Access denied
  • 404 – Not found

보안 값 업데이트 (Update a secure value)

PUT /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues/:name

기존 보안 값을 새 명세로 교체해요.

URL 매개변수

  • namespace: 어떤 네임스페이스를 사용할지에 대해 더 읽으려면 API 개요를 참고해요.
  • name: 보안 값의 이름.

요청 본문

  • spec.description: 이 보안 값의 목적을 설명하는 짧은 설명. 필수. 최대 25자.
  • spec.value: 저장할 시크릿 값. 필수. 최대 24576바이트.
  • spec.decrypters: 이 보안 값을 복호화할 수 있는 서비스 목록. 최대 64개 항목. 지원되는 값 목록은 decrypters의 주석을 참고해요.

필수 권한

설명은 소개의 주석을 참고해요.

테이블 펼치기

Action Scope
secret.securevalues:write secret.securevalues:*

예제 업데이트 요청 (Example update request):

http

PUT /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues/api-key HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>

{
  "metadata": {
    "name": "api-key"
  },
  "spec": {
    "description": "External API Key",
    "value": "new-value-12345",
    "decrypters": ["synthetic-monitoring"]
  }
}

예제 응답 (Example response):

http

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 282

{
  "apiVersion": "secret.grafana.app/v1beta1",
  "kind": "SecureValue",
  "metadata": {
    "name": "api-key",
    "namespace": "default",
    "uid": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
    "creationTimestamp": "2024-01-15T10:35:00Z"
  },
  "spec": {
    "description": "External API Key",
    "decrypters": ["synthetic-monitoring"]
  }
}

상태 코드:

  • 200 – OK
  • 400 – Errors (invalid JSON, missing or invalid fields, etc)
  • 401 – Unauthorized
  • 403 – Access denied
  • 404 – Not found

보안 값 삭제 (Delete a secure value)

DELETE /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues/:name

보안 값을 영구 삭제해요. 이렇게 하면 기본 저장된 시크릿 값도 삭제돼요.

URL 매개변수

  • namespace: 어떤 네임스페이스를 사용할지에 대해 더 읽으려면 API 개요를 참고해요.
  • name: 보안 값의 이름.

필수 권한

설명은 소개의 주석을 참고해요.

테이블 펼치기

Action Scope
secret.securevalues:delete secret.securevalues:*

예제 삭제 요청 (Example delete request):

http

DELETE /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues/api-key HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVI...KEN>

예제 응답 (Example response):

http

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 65

{
  "apiVersion": "v1",
  "kind": "Status",
  "status": "Success",
  "code": 200
}

상태 코드:

  • 200 – OK
  • 401 – Unauthorized
  • 403 – Access denied
  • 404 – Not found

더 알아보기 (Learn more)