keenauth_management_client
keenauth_management_client 리소스는 app_type = "management"인 애플리케이션의 management API 접근 설정을 지정합니다. 즉, 애플리케이션의 머신 간(M2M) 클라이언트가 management API를 호출할 수 있는 권한과 IP 허용 목록을 설정합니다. 애플리케이션당 레코드는 최대 하나이며, 레코드는 애플리케이션 ID로 식별됩니다.
최소 권한
이 리소스는 management API에 대한 접근 권한을 부여합니다. 권한 범위를 좁게 유지하십시오.
- 자동화에 필요한 권한만 나열하십시오. 예를 들어 모든
users:*권한 대신users:read만 지정하십시오. allowed_cidrs는 클라이언트가 실행되는 네트워크로 제한하십시오.- 자동화마다 별도의 management 애플리케이션을 사용하십시오. 그래야 각각을 독립적으로 축소하거나 제거할 수 있습니다.
설정을 적용하는 API 키는 자신이 가진 권한과 네트워크만 부여할 수 있습니다.
resource "keenauth_application" "ops" {
key = "ops-automation"
name = "Ops automation"
app_type = "management"
party = "first_party"
}
resource "keenauth_management_client" "ops" {
application_id = keenauth_application.ops.id
permissions = ["users:read", "applications:read"]
allowed_cidrs = ["203.0.113.0/24"]
}
서명 키
이 리소스에는 비밀 값이나 키가 포함되지 않습니다. CLI 또는 대시보드에서 POST /v1/applications/{application_id}/credentials(type: public_key)를 사용해 애플리케이션의 공개 키를 등록하십시오. 이 리소스에서 API는 jwks_uri와 public_keys를 거부합니다.
plan에서의 allowed_cidrs
- 레코드를 생성할 때
allowed_cidrs를 생략하면 API는 호출한 API 키의 목록을 기록합니다. 해당 키에 목록이 없으면 클라이언트에는 IP 제한이 없습니다. plan에는(known after apply)로 표시됩니다. - 레코드가 존재한 후에는 속성을 생략해도 현재 값이 유지됩니다. 설정에서 속성을 제거해도 목록은 초기화되지 않으며, 설정 외부에서 이루어진 변경은 diff 없이 수용됩니다. 목록을 관리하려면 명시적으로 작성하십시오.
- 빈 목록은 API가
[]를 호출한 키의 목록으로 변환하므로 plan 단계에서 거부됩니다. 대신 속성을 생략하십시오. - 각 블록은 정식 형식으로 작성하십시오. 즉 네트워크 주소를 쓰고, IPv6는 소문자로 쓰십시오. 예를 들어
10.0.0.5/24가 아니라10.0.0.0/24로 작성하십시오.
오류
| 오류 | 의미 |
|---|---|
403 insufficient_permissions |
이 레코드는 API 키로만 관리할 수 있습니다. client_id + private_key가 아니라 api_key로 구성된 provider를 사용하십시오. API 키를 사용하는 경우 권한이 제한된 키에 management-clients:read 또는 management-clients:write가 없습니다. |
403 permission_escalation |
레코드에 API 키가 가지고 있지 않은 권한이나 네트워크가 포함되어 있습니다. |
생성 시 404 |
API 키의 환경에 해당 애플리케이션이 없습니다. |
409 |
애플리케이션에 이미 레코드가 있습니다. 가져오기를 사용하십시오. |
application_id에서 422 |
애플리케이션 유형이 management가 아닙니다. |
412 |
plan 이후 레코드가 변경되었습니다. 변경된 내용은 없으니 plan을 다시 실행하십시오. |
가져오기
애플리케이션 ID로 가져오십시오.
tofu import keenauth_management_client.ops app_01j9zq3v8c5m2x7k4t6r1n0b3d