Spravovať tajomstvá funkcií

Použite tajomstvá na poskytnutie citlivej konfigurácie, ako sú osobné prístupové tokeny a API kľúče, pre vaše funkcie. Nikdy nenatvrdo kódujte tajné hodnoty v zdrojovom kóde ani ich nevystavujte frontendu. Čítajte ich počas behu zavolaním ctx.getSecret().

Požiadavky

  • Aplikácia Fabric s inicializovanými funkciami. Pre pokyny na nastavenie pozri Použiť funkcie v Fabric Apps.
  • Aplikácia sa nasadila aspoň raz s npx rayfin up. rayfin secret set a zamerať rayfin secret list sa na aktívny nasadený objekt a zlyhať, keď neexistuje žiadny vzdialený koncový bod.
  • Tajná hodnota požadovaná vašou funkciou.

Nastav tajomstvo

Z root aplikácie povolte funkciu Functions a nastavte tajomstvo:

npx rayfin secret set API_KEY

Príkaz zobrazí požadovanú hodnotu a maskuje váš vstup. Na aktualizáciu existujúceho tajomstva spustite ten istý príkaz znova. Nová hodnota nahrádza existujúcu hodnotu.

Dôležitý

Nezahrňujte do príkazu hodnotu tajomstva ani ju neukladajte do správy zdrojového kódu.

Zoznam tajomstiev

Zoznam nakonfigurovaných názvov tajomstiev:

npx rayfin secret list

Príkaz zobrazuje tajné mená a časové pečiatky, ale nikdy nezobrazuje tajné hodnoty.

Prístup k tajomstvu z funkcie

Zavolajte ctx.getSecret('NAME') na získanie tajomstva pre aktuálnu invokáciu. Metóda vráti, undefined keď tajomstvo nie je nakonfigurované, takže explicitne spracovávajte voliteľné tajomstvá alebo poskytnite vhodné predvolené netajné hodnoty.

Nasledujúca funkcia získa súbor z GitHub repozitára. Verejné repozitáre nevyžadujú osobný prístupový token (PAT). Pre súkromné repozitáre funkcia pridáva tajomstvo GITHUB_PAT k požiadavke:

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ázdnych spojení naznačuje, že funkcia nedeklaruje externé publikum zdrojov. PAT je tajomstvo, nie token zdrojov poskytovaný platformou.

Konfigurácia tajomstiev podľa prostredia

Uveďte tajné hodnoty v prostredí, kde funkcia beží:

  • Lokálny vývoj: Pridajte tajné hodnoty do sekcie Values .rayfin/functions/local.settings.json Lokálny hostiteľ Functions číta hodnoty prostredia funkcií z tohto súboru.
  • Fabric: Nastavte tajomstvá pre nasadený predmet v Fabric portáli.

Používajte rovnaký tajný názov v každom prostredí. Napríklad nakonfigurujte GITHUB_PAT lokálne a v Fabric, potom to čítajte s ctx.getSecret('API_KEY') v oboch prostrediach.

Dôležitý

Neukladajte tajné hodnoty do rayfin/functions/local.settings.json alebo v žiadnom inom súbore do správy zdrojového kódu. V súboroch, ktoré commitujete, ukladajte len netajné príklady alebo zástupné symboly.