
# keenauth_management_client

`keenauth_management_client` kaynağı, `app_type = "management"` olan bir uygulamanın yönetim API erişimini ayarlar: uygulamanın makineden makineye istemcisinin yönetim API'sini çağırabileceği izinler ve IP izin listesi. Bir uygulamanın en fazla bir kaydı vardır ve kayıt uygulama kimliğiyle tanımlanır.

## En az ayrıcalık

Bu kaynak yönetim API'sine erişim verir. Erişimi dar tutun:

- Yalnızca otomasyonun ihtiyaç duyduğu izinleri listeleyin; örneğin tüm `users:*` izinleri yerine `users:read`.
- `allowed_cidrs` değerini, istemcinin çalıştığı ağlarla sınırlayın.
- Her otomasyon için ayrı bir yönetim uygulaması kullanın; böylece her biri bağımsız olarak daraltılabilir veya kaldırılabilir.

Yapılandırmayı uygulayan API anahtarı, yalnızca kendisinde bulunan izinleri ve ağları verebilir.

```terraform
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"]
}
```

## İmzalama anahtarları

Bu kaynak hiçbir gizli bilgi veya anahtar tutmaz. Uygulamanın genel anahtarını CLI'da veya kontrol panelinde `POST /v1/applications/{application_id}/credentials` (`type: public_key`) ile kaydedin. API, bu kaynakta `jwks_uri` ve `public_keys` değerlerini reddeder.

## Plandaki `allowed_cidrs`

- Kayıt oluşturulurken `allowed_cidrs` değerini atlarsanız API, çağıran API anahtarının kendi listesini yazar. Anahtarın bir listesi yoksa istemcinin IP kısıtlaması olmaz. Plan `(known after apply)` gösterir.
- Kayıt var olduktan sonra özniteliği atlamak mevcut değeri korur. Yapılandırmadan kaldırmak listeyi sıfırlamaz ve yapılandırma dışında yapılan bir değişiklik fark oluşturmadan kabul edilir. Yönetmek için listeyi açıkça yazın.
- Boş liste plan aşamasında reddedilir, çünkü API `[]` değerini çağıran anahtarın listesine dönüştürür. Bunun yerine özniteliği atlayın.
- Her bloğu kanonik biçimde yazın: ağ adresi ve küçük harfli IPv6. Örneğin `10.0.0.5/24` yerine `10.0.0.0/24` yazın.

## Hatalar

| Hata | Anlamı |
|---|---|
| `403 insufficient_permissions` | Bu kayıtları yalnızca bir API anahtarı yönetebilir; `client_id` + `private_key` yerine `api_key` ile yapılandırılmış bir sağlayıcı kullanın. API anahtarıyla, kısıtlı bir anahtarda `management-clients:read` veya `management-clients:write` eksiktir. |
| `403 permission_escalation` | Kayıt, API anahtarında bulunmayan izinlere veya ağlara sahip olurdu. |
| Oluşturmada `404` | Uygulama, API anahtarının ortamında yok. |
| `409` | Uygulamanın zaten bir kaydı var. Bunu içe aktarın. |
| `application_id` üzerinde `422` | Uygulama `management` türünde değil. |
| `412` | Kayıt plandan sonra değişti. Hiçbir şey değiştirilmedi; `plan` komutunu yeniden çalıştırın. |

## İçe aktarma

Uygulama kimliğiyle içe aktarın:

```shell
tofu import keenauth_management_client.ops app_01j9zq3v8c5m2x7k4t6r1n0b3d
```
