Gestisci i segreti della funzione

Usa segreti per fornire configurazioni sensibili, come token di accesso personali e chiavi API, alle tue funzioni. Mai codificare i valori segreti nel codice sorgente né esporli al frontend. Leggili durante la runtime chiamando ctx.getSecret().

Prerequisiti

  • Un'app Fabric con funzioni inizializzate. Per le istruzioni di configurazione, vedi Usa le funzioni nelle app Fabric.
  • L'app è stata rilasciata almeno una volta con npx rayfin up. rayfin secret set e rayfin secret list mirano all'elemento attivo distribuito e falliscono quando non esiste un endpoint remoto.
  • Un valore segreto richiesto dalla tua funzione.

Impostare un segreto

Dalla radice dell'app, abilita la funzione funzioni e imposta il segreto:

npx rayfin secret set API_KEY

Il comando richiede l'immissione del valore e maschera l'input immesso. Per aggiornare un segreto esistente, esegui di nuovo lo stesso comando. Il nuovo valore sostituisce il valore esistente.

Important

Non includere un valore segreto nel comando né inviarlo al controllo del fonte.

Elenco dei segreti

Elenca i nomi segreti configurati:

npx rayfin secret list

Il comando mostra nomi segreti e timestamp, ma mai i valori segreti.

Accedi a un segreto da una funzione

Chiama ctx.getSecret('NAME') per recuperare un segreto per l'invocazione attuale. Il metodo ritorna undefined quando il segreto non è configurato, quindi gestisci esplicitamente i segreti opzionali o fornisci un default non segreto appropriato.

La seguente funzione ottiene un file da un repository GitHub. I repository pubblici non richiedono un token di accesso personale (PAT). Per i repository privati, la funzione aggiunge il GITHUB_PAT segreto alla richiesta:

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

L'array di connessioni vuoto indica che la funzione non dichiara un'audience di risorse esterne. Un PAT è un segreto, non un token di risorsa fornito dalla piattaforma.

Configura i segreti in base all'ambiente

Fornire valori segreti nell'ambiente in cui la funzione è eseguita:

  • Sviluppo locale: Aggiungi valori segreti alla Values sezione di rayfin/functions/local.settings.json. L'host locale di Functions legge da questo file i valori dell'ambiente della funzione.
  • Fabric: Configura i segreti per l'oggetto distribuito nel portale Fabric.

Usa lo stesso nome segreto in ogni ambiente. Ad esempio, configurare GITHUB_PAT localmente e in Fabric, quindi leggerlo con ctx.getSecret('API_KEY') in entrambi gli ambienti.

Important

Non eseguire il commit di valori segreti in rayfin/functions/local.settings.json o in qualsiasi altro file nel controllo del codice sorgente. Conserva solo esempi non segreti o segnaposto nei file che commexi.