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

  1. app_type = "management" ile bir uygulama ve yapılandırmanın ihtiyaç duyduğu izinlerle bir keenauth_management_client kaydı oluşturun.
  2. Bir anahtar çiftinin genel anahtarını uygulamaya kaydedin (type: public_key ile POST /v1/applications/{application_id}/credentials, CLI veya kontrol paneli).
  3. 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

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ı