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