Administrer funktionshemmeligheder

Brug hemmeligheder til at levere følsomme konfigurationer, såsom personlige adgangstoks og API-nøgler, til dine funktioner. Kod aldrig hemmelige værdier hårdt i kildekoden eller eksponér dem til frontend. Læs dem under kørsel ved at ringe ctx.getSecret()til .

Forudsætninger

  • En Fabric-app med initialiserede funktioner. For opsætningsinstruktioner, se Brug funktioner i Fabric Apps.
  • Appen blev implementeret mindst én gang med npx rayfin up. rayfin secret set og rayfin secret list målretter det aktive deployerede element og fejler, når der ikke findes noget fjernt endpoint.
  • En hemmelig værdi, som din funktion kræver.

Sæt en hemmelighed

Fra appens rod aktiveres funktionen og indsættes hemmeligheden:

npx rayfin secret set API_KEY

Kommandoen giver værdien en prompt og skjuler dit input. For at opdatere en eksisterende hemmelighed, kør den samme kommando igen. Den nye værdi erstatter den eksisterende værdi.

Vigtig

Inkluder ikke en hemmelig værdi i kommandoen eller commmit den til versionskontrol.

Listehemmeligheder

List de konfigurerede hemmelige navne:

npx rayfin secret list

Kommandoen viser hemmelige navne og tidsstempler, men viser aldrig hemmelige værdier.

Få adgang til en hemmelighed fra en funktion

Kald ctx.getSecret('NAME') for at hente en hemmelighed til den nuværende påkaldelse. Metoden returneres undefined , når hemmeligheden ikke er konfigureret, så håndter valgfrie hemmeligheder eksplicit eller giv en passende ikke-hemmelig standard.

Følgende funktion henter en fil fra et GitHub-repository. Offentlige repositories kræver ikke en personlig adgangstoken (PAT). For private repositorier tilføjer funktionen hemmeligheden GITHUB_PAT til forespørgslen:

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

Det tomme forbindelsesarray indikerer, at funktionen ikke erklærer en ekstern ressource-audience. En PAT er en hemmelighed, ikke en platform-leveret ressourcetoken.

Konfigurer hemmeligheder efter miljø

Angiv hemmelige værdier i miljøet, hvor funktionen kører:

  • Lokal udvikling: Tilføj hemmelige værdier til sektionen Values af rayfin/functions/local.settings.json. Den lokale Functions-vært læser funktionsmiljøværdier fra denne fil.
  • Fabric: Konfigurer hemmeligheder for det deployerede item i Fabric-portalen.

Brug det samme hemmelige navn i hvert miljø. For eksempel kan du konfigurere GITHUB_PAT det lokalt og i Fabric, og derefter læse det i ctx.getSecret('API_KEY') begge miljøer.

Vigtig

Comm ikke hemmelige værdier i rayfin/functions/local.settings.json eller nogen anden fil til versionskontrol. Gem kun ikke-hemmelige eksempler eller pladsholdere i filer, du commiter.