Správa tajemství funkcí

Používejte tajemství k poskytnutí citlivé konfigurace, jako jsou osobní přístupové tokeny a API klíče, pro vaše funkce. Nikdy napevno nevkládejte tajné údaje do zdrojového kódu ani je nezpřístupňujte frontendu. Přečtěte je za běhu voláním ctx.getSecret().

Předpoklady

  • Aplikace Fabric s inicializovanými funkcemi. Pro instrukce k nastavení viz Použít funkce v Fabric Apps.
  • Aplikace byla alespoň jednou nasazena pomocí npx rayfin up. rayfin secret set a rayfin secret list cílí na aktivně nasazenou položku a selžou, pokud neexistuje žádný vzdálený koncový bod.
  • Tajná hodnota požadovaná vaší funkcí.

Nastavení tajného kódu

Z kořene aplikace povolte funkci funkcí a nastavte tajemství:

npx rayfin secret set API_KEY

Příkaz vyhledá hodnotu a maskuje váš vstup. Pro aktualizaci existujícího tajemství spusťte stejný příkaz znovu. Nová hodnota nahrazuje stávající hodnotu.

Important

Nezahrňujte do příkazu hodnotu tajného kódu ani ji nepřenášejte do správy zdrojového kódu.

Vypsat tajemství

Uveďte nakonfigurovaná jména tajemství:

npx rayfin secret list

Příkaz zobrazuje tajná jména a časová razítka, ale nikdy nezobrazuje tajné hodnoty.

Přístup k tajemství z funkce

Zavolejte ctx.getSecret('NAME') pro získání tajemství pro aktuální invokaci. Metoda vrátí hodnotu undefined, když tajný klíč není nakonfigurovaný, takže volitelné tajné klíče zpracovávejte explicitně nebo zadejte vhodnou výchozí hodnotu, která není tajná.

Následující funkce získá soubor z repozitáře GitHub. Veřejná úložiště nevyžadují osobní přístupový token (PAT). Pro soukromé repozitáře funkce přidává tajemství GITHUB_PAT k požadavku:

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();
  },
  [],
);

Pole prázdných spojení naznačuje, že funkce nedeklaruje externí publikum zdrojů. PAT je tajemství, nikoli token zdrojů poskytovaný platformou.

Konfigurujte tajemství podle prostředí

Uveďte tajné hodnoty v prostředí, kde funkce běží:

  • Lokální vývoj: Přidejte tajné hodnoty do sekce Values .rayfin/functions/local.settings.json Lokální hostitel Functions čte hodnoty prostředí funkcí z tohoto souboru.
  • Fabric: Nastavte tajemství pro nasazený předmět v portálu Fabric.

Použijte ve všech prostředích stejný název tajného kódu. Například nakonfigurujte GITHUB_PAT místně a ve službě Fabric a potom jej čtěte pomocí ctx.getSecret('API_KEY') v obou prostředích.

Important

Neukládejte tajné hodnoty v souboru rayfin/functions/local.settings.json ani v žádném jiném souboru do správy zdrojového kódu. Ukládejte pouze netajné příklady nebo zástupné symboly v souborech, které commitujete.