OpenTofu ve Terraform sağlayıcısı
keenauth/keenauth sağlayıcısı, bir KeenAuth ortamının yapılandırmasını kod olarak yönetir. Yönetim API'sini çağırır, eklenti protokolü 6'yı kullanır ve OpenTofu ile Terraform ile çalışır. Henüz bir sağlayıcı kayıt defterinde yayımlanmamıştır.
Kimlik doğrulama ve hedef
Sağlayıcı, kimlik bilgisinin ait olduğu ortamı yönetir. Birden fazla ortamı yönetmek için her ortam için ayrı bir sağlayıcı takma adı (alias) yapılandırın. Kimlik doğrulama yalnızca iki yoldan biriyle yapılır: bir yönetim API anahtarıyla ya da management uygulaması olarak private_key_jwt kullanarak anahtarsız biçimde. İkisini birden ayarlamak bir hatadır.
| Ayar | Ortam değişkeni | Açıklama |
|---|---|---|
api_key |
KEENAUTH_API_KEY |
Yönetim API anahtarı. Ortam değişkenini tercih edin. Anahtar hiçbir zaman durum veya plan dosyalarına yazılmaz. |
client_id |
KEENAUTH_CLIENT_ID |
api_key yerine, bir management uygulamasının kimliği (app_…). private_key ve issuer gerektirir. |
private_key |
KEENAUTH_PRIVATE_KEY |
Genel anahtarı uygulamaya kayıtlı PEM PKCS#8 özel anahtarı: EC P-256, EC P-384, Ed25519 veya en az 2048 bit RSA. Ortam değişkenini tercih edin. Hiçbir zaman duruma yazılmaz. |
private_key_algorithm |
PS256 (varsayılan) veya RS256, yalnızca RSA anahtarı için. |
|
issuer |
KEENAUTH_ISSUER |
Ortamın varsayılan ana bilgisayarı, https://<environment>.<region>.keenauth.app. Sağlayıcı belirtecini <issuer>/oauth2/token adresinden alır. |
scopes |
client_id ile istenecek izinler. Atlanırsa, yetkinin varsayılan kapsamları geçerli olur. |
|
region |
KEENAUTH_REGION |
eu (varsayılan) veya us. API adresi https://api.eu.keenauth.com/v1 / https://api.us.keenauth.com/v1 şeklindedir. |
base_url |
KEENAUTH_BASE_URL |
Açık API adresi. Yalnızca https://<host>.keenauth.com/v1 kabul edilir, ayrıca yerel testler için loopback adresleri. |
terraform {
required_providers {
keenauth = { source = "keenauth/keenauth" }
}
}
provider "keenauth" {
region = "eu"
}
private_key_jwt ile anahtarsız kimlik doğrulama
app_type = "management"ile bir uygulama ve yapılandırmanın ihtiyaç duyduğu izinlerle birkeenauth_management_clientkaydı oluşturun.- Bir anahtar çiftinin genel anahtarını uygulamaya kaydedin (
type: public_keyilePOST /v1/applications/{application_id}/credentials, CLI veya kontrol paneli). - Sağlayıcıya uygulama kimliğini, özel anahtarı ve issuer değerini verin:
export KEENAUTH_CLIENT_ID="app_..."
export KEENAUTH_PRIVATE_KEY="$(cat ops-automation.pk8.pem)"
export KEENAUTH_ISSUER="https://acme.eu.keenauth.app"
tofu plan
Her yönetim belirteci için sağlayıcı, 60 saniye geçerli bir istemci iddiası (RFC 7523) imzalar: iss ve sub istemci kimliğidir, aud issuer değeridir, jti rastgeledir ve kid anahtarın RFC 7638 parmak izidir. Bu iddiayı client_credentials yetkisiyle 10 dakikalık bir belirteçle değiştirir ve eski belirtecin sona ermesinden bir dakika önce yenisini alır. Belirteç, uygulamanın keenauth_management_client kaydındakinden fazla izne hiçbir zaman sahip olamaz. Yalnızca API anahtarı kabul eden uç noktalar, örneğin yönetim istemcileri, api_key ile yapılandırılmış bir sağlayıcı takma adı gerektirir.
Kaynaklar
| Ad | Tür | Yönettiği şey |
|---|---|---|
keenauth_application |
kaynak | Bir uygulama (OAuth 2.0 / OpenID Connect istemcisi). |
keenauth_connection |
kaynak | Bir giriş bağlantısı: veritabanı, parolasız, passkey, sosyal veya kurumsal. |
keenauth_connection_oidc_config |
kaynak | Kurumsal bir OIDC bağlantısının taraf yapılandırması; yalnızca yazılabilen (write-only) bir istemci gizli anahtarıyla (OpenTofu veya Terraform 1.11+). Bağlantı kimliğiyle içe aktarın. Yok etme yalnızca durumdan kaldırır. |
keenauth_environment_settings |
kaynak | Ortam ayarları: diller, oturumlar, hesap oluşturma, bildirimler, kurtarma, MFA, birincil faktörler. Ortam başına bir tane. |
keenauth_attack_protection |
kaynak | Saldırı koruması: kaba kuvvet, IP sınırlama, kimlik bilgisi doldurma, botlar, ele geçirilmiş parolalar, hesap oluşturma, SMS dolandırıcılığı, risk politikası. Ortam başına bir tane. |
keenauth_branding |
kaynak | Markalama taslağının ortam teması. Ortam başına bir tane. |
keenauth_custom_domain |
kaynak | Özel bir giriş alan adı. |
keenauth_api_key |
kaynak | Bir yönetim API anahtarı: yalnızca içe aktarılır; yok etme onu iptal eder. |
keenauth_organization |
kaynak | Bir B2B kuruluşu: ad, slug, dış kimlik, meta veriler, marka rengi ve üyelik sınırı. Yok etme onu hemen siler; durum işlemleri (devre dışı bırakma, etkinleştirme, silmeyi iptal etme) CLI ve kontrol panelinde kalır. |
keenauth_organization_role |
kaynak | Kuruluşa özgü bir rol ve izin kümesi (Business planı). <org_id>/<key> ile içe aktarın. |
keenauth_permission |
kaynak | Bir API'nin izni (OAuth kapsamı) ve onay ekranı metinleri. <api_id>/<value> ile içe aktarın. |
keenauth_role |
kaynak | Bir ortam rolü ve tam izin kümesi. Kullanıcı ve üyelik atamaları kaynak değildir. |
keenauth_organization_domain |
kaynak | Alan adı yakalama ve SSO yönlendirmesi için bir kuruluş alan adı. Doğrulama bir işlem olarak kalır. |
keenauth_session_policy |
kaynak | Bir kuruluşun oturum süreleri; yalnızca ortamdan daha katı olabilir (Enterprise planı). |
keenauth_mfa_policy |
kaynak | Bir kuruluşun MFA kuralları; yalnızca ortamdan daha katı olabilir. |
keenauth_email_template |
kaynak | Bir e-posta şablonunun (aile ve dil) yayımlanmış içeriği; Startup planı. <family>/<locale> ile içe aktarın. Yok etme yalnızca durumdan kaldırır. |
keenauth_management_client |
kaynak | Bir management uygulamasının yönetim API izinleri ve IP izin listesi. Uygulama kimliğiyle içe aktarın. |
keenauth_directory |
kaynak | Bir kuruluşun SCIM dizini ve sağlama ayarları; name ve ayarlar yerinde değişir, organization_id, scim_host ve type onu yeniden oluşturur. Dizin kimliğiyle içe aktarın. |
keenauth_directory_role_mapping |
kaynak | Bir SCIM dizin grubunu bir role eşler; herhangi bir değişiklik onu yeniden oluşturur. <directory_id>/<mapping_id> ile içe aktarın. |
keenauth_directory_token |
kaynak | Bir dizinin SCIM belirteci; durumda yalnızca RSA genel anahtarınızla şifrelenmiş tutulur. Her değişiklik yeni bir belirteç oluşturur, yok etme onu iptal eder. İçe aktarılamaz. |
keenauth_webhook_endpoint |
kaynak | Bir webhook uç noktası; her argüman yerinde değişir. İmzalama sırrı durumda yalnızca RSA genel anahtarınızla şifrelenmiş tutulur; anahtarı veya rotation_trigger değerini değiştirmek onu döndürür. Uç nokta kimliğiyle veya anahtarıyla içe aktarın. |
keenauth_application |
veri kaynağı | Bir uygulamayı id veya key ile okur. |
keenauth_connection |
veri kaynağı | Bir bağlantıyı id veya key ile okur. |
keenauth_organization |
veri kaynağı | Bir kuruluşu id veya slug ile okur. |
keenauth_role |
veri kaynağı | Bir ortam rolünü id veya key ile okur. |
keenauth_environment |
veri kaynağı | API anahtarının ortamını okur: kimlik, tür, bölge, hücre, durum ve plan. |
resource "keenauth_connection" "google" {
key = "google"
type = "social"
strategy = "google"
name = "google"
status = "active"
settings = jsonencode({ scopes = ["openid", "email", "profile"] })
}
resource "keenauth_application" "storefront" {
key = "storefront"
name = "Storefront"
app_type = "web"
party = "first_party"
redirect_uris = ["https://shop.example.com/callback"]
connection_ids = [keenauth_connection.google.id]
}
İçe aktarma
Uygulamalar ve bağlantılar key veya kimlikleriyle, özel alan adları ana bilgisayar adlarıyla veya kimlikleriyle, API anahtarları ise kimlikleriyle içe aktarılabilir:
tofu import keenauth_application.storefront storefront
tofu import keenauth_connection.google conn_01j9zq3v8c5m2x7k4t6r1n0b3d
tofu import keenauth_custom_domain.login login.example.com
Ortam ayarları, saldırı koruması ve markalama taslağı ortam başına bir kez bulunur; bunları sabit environment-settings, attack-protection ve branding kimlikleriyle içe aktarın. Bunlardan birini yok etmek yalnızca durumdan kaldırır.
Güvenli değişiklikler
- Oluşturma bir
Idempotency-Keygönderir; bu nedenle yeniden denenen bir oluşturma ikinci bir nesne üretmez. - Güncelleme veya silme, son okunan ETag ile bir
If-Matchgönderir. Plan oluşturulduktan sonra biri nesneyi değiştirdiyse API412yanıtı verir ve hiçbir şey değişmez.planişlemini yeniden çalıştırın. - Kontrol panelinde yapılan bir değişiklik bir sonraki
plançıktısında sapma olarak görünür veapplyonu geri alır. Sağlayıcı dışında silinen bir nesne durumdan kaldırılır ve yeniden oluşturulur. - Bir güncelleme yalnızca değişen alanları JSON birleştirme yaması (RFC 7396) olarak gönderir.
Gizli bilgiler
Hiçbir kaynak, durumda gizli bilgiyi düz metin olarak saklamaz. KeenAuth'a verdiğiniz gizli bilgiler yalnızca yazılabilen argümanlardır (*_wo): sağlayıcı bunları gönderir ama hiçbir zaman duruma veya plan dosyalarına yazmaz ve yalnızca *_wo_version değiştiğinde yeniden gönderir. Bunlar OpenTofu veya Terraform 1.11 ya da üzeri gerektirir. Bugün bu, kurumsal bir OIDC bağlantısının istemci gizli anahtarıdır (keenauth_connection_oidc_config). Uygulama istemci gizli anahtarları ve imzalama anahtarları bu sağlayıcı sürümünde yönetilmez; bunları kontrol panelinde veya CLI ile oluşturup döndürün. KeenAuth'un ürettiği gizli bilgiler yalnızca yazılabilir olamaz, çünkü yazılabilen bir argüman yalnızca yapılandırmadan sağlayıcıya bir değer taşır. Sağlayıcı hiçbir zaman API anahtarı oluşturmaz, çünkü ham anahtar durumda sonuçlanırdı: anahtarı CLI ile oluşturun, gizli bilgi yöneticinizde saklayın ve kimliğiyle keenauth_api_key içine aktarın. Bir dizinin SCIM belirteci API tarafından yalnızca bir kez gösterilir; bu nedenle sağlayıcı, dizin oluşturmanın döndürdüğü belirteci iptal eder ve hiçbir zaman saklamaz. keenauth_directory_token, kimlik sağlayıcınız için belirteci oluşturur ve yalnızca RSA genel anahtarınızla şifrelenmiş olarak durumda tutar. keenauth_webhook_endpoint, webhook imzalama sırrını aynı şekilde yalnızca public_key ile şifrelenmiş olarak tutar ve anahtar verilmediğinde onu atar. Bağlantı settings alanı gizli bilgi içermemelidir; API gizli bilgi benzeri ayarları reddeder.
Bu sürümün sınırları
- Uygulamalar, bağlantılar ve bunların OIDC yapılandırması, ortam ayarları, saldırı koruması, markalama taslağının ortam teması, özel alan adları, API anahtarları (yalnızca içe aktarma), kuruluşlar, roller ve izinler, kuruluş alan adları, kuruluş oturum ve MFA politikaları, e-posta şablonları, yönetim istemcileri, SCIM dizinleri, grup-rol eşlemeleri, SCIM belirteçleri (genel anahtarınızla şifrelenmiş) ve webhook uç noktaları yönetilir. Kancalar, günlük akışları ve SMS şablonları sonraki sürümlerde gelecektir.
- Sağlayıcı markalamayı yayımlamaz; taslağı kontrol panelinde veya
keenauth branding publishile yayımlayın. - Sunucu varsayılanı olan isteğe bağlı alanlar (örneğin
grant_types) yapılandırmadan kaldırıldığında son değerlerini korur. - Şema açıklamaları ve hata mesajları İngilizcedir.