Fonksiyon sırlarını yönet

Fonksiyonlarınıza kişisel erişim tokenları ve API anahtarları gibi hassas yapılandırmalar sağlamak için sırlar kullanın. Kaynak kodda gizli değerleri asla sabit kodlamayın veya ön yüze açığa çıkarmayın. ctx.getSecret() çağrısı yaparak çalışma zamanında okuyun.

Prerequisites

  • İşlevleri başlatılmış bir Fabric uygulaması. Kurulum talimatları için bkz. Use Functions in Fabric Apps.
  • Uygulama, npx rayfin up ile en az bir kez dağıtıldı. rayfin secret set ve rayfin secret list aktif dağıtılan öğeyi hedefleyip uzak uç noktası olmadığında başarısız olur.
  • Fonksiyonunuz için gereken gizli bir değer.

Gizli bilgi ayarlama

Uygulama kökünden, fonksiyon özelliğini etkinleştirin ve sırrı ayarlayın:

npx rayfin secret set API_KEY

Komut değeri sorar ve girdinizi maskeler. Mevcut bir sırrı güncellemek için aynı komutu tekrar çalıştırın. Yeni değer mevcut değerin yerini alır.

Important

Komuta gizli bir değer eklemeyin veya onu kaynak kontrolüne bağlamayın.

Gizlilikleri listele

Yapılandırılmış gizli isimleri listeleyin:

npx rayfin secret list

Komut gizli isimleri ve zaman damgalarını gösterir, ancak asla gizli değerleri göstermez.

Bir işlevden gizli bilgiye erişim

Geçerli çağrı için bir gizli anahtar almak üzere ctx.getSecret('NAME') çağırın. Gizli değer yapılandırılmadığında yöntem undefined döndürür; bu nedenle isteğe bağlı gizli değerleri açıkça işleyin veya uygun bir gizli olmayan varsayılan değer sağlayın.

Aşağıdaki fonksiyon, bir GitHub deposundan bir dosya alır. Açık depolar kişisel erişim tokenı (PAT) gerektirmez. Özel depolar için işlev, GITHUB_PAT gizli anahtarını isteğe ekler:

import {
  UserDataFunctions,
  type RayfinContext,
} from '@microsoft/fabric-user-data-functions';

const udf = new UserDataFunctions();

udf.func(
  'getGitHubFile',
  async (
    owner: string,
    repo: string,
    path: string,
    ref: string,
    ctx: RayfinContext,
  ): Promise<string> => {
    const pat = ctx.getSecret('GITHUB_PAT');
    const headers: Record<string, string> = {
      Accept: 'application/vnd.github.raw+json',
      'User-Agent': 'rayfin-app',
    };

    if (pat) {
      headers.Authorization = `Bearer ${pat}`;
    }

    const encodedPath = path
      .split('/')
      .map(encodeURIComponent)
      .join('/');
    const url =
      `https://api.github.com/repos/${encodeURIComponent(owner)}/` +
      `${encodeURIComponent(repo)}/contents/${encodedPath}` +
      `?ref=${encodeURIComponent(ref || 'main')}`;

    const response = await fetch(url, { headers });
    if (!response.ok) {
      throw new Error(`GitHub ${response.status}: ${await response.text()}`);
    }

    return response.text();
  },
  [],
);

Boş bağlantılar dizisi, fonksiyonun harici bir kaynak kitlesi ilan etmediğini gösterir. PAT bir sırdır, platform tarafından sağlanan bir kaynak tokenı değildir.

Sırları ortama göre yapılandırma

Fonksiyonun çalıştığı ortamda gizli değerler sağlanır:

  • Yerel geliştirme: Gizli değerleri rayfin/functions/local.settings.json içindeki Values bölümüne ekleyin. Yerel Fonksiyonlar ana bilgisayarı, bu dosyadan fonksiyon ortamı değerlerini okur.
  • Fabric: Fabric portalında dağıtılan öğe için sırları yapılandırın.

Her ortamda aynı gizli adı kullanın. Örneğin, GITHUB_PAT öğesini yerel ortamda ve Fabric'te yapılandırın, ardından bunu her iki ortamda da ctx.getSecret('API_KEY') ile okuyun.

Important

Gizli değerleri içinde rayfin/functions/local.settings.json veya başka bir dosyada kaynak kontrolüne göndermeyin. Yalnızca gizli olmayan örnekleri veya yer tutucuları commit ettiğiniz dosyalarda saklayın.