Διαχείριση μυστικών λειτουργιών

Χρησιμοποιήστε μυστικά για να παρέχετε ευαίσθητες ρυθμίσεις, όπως προσωπικά διακριτικά πρόσβασης και κλειδιά API, στις λειτουργίες σας. Ποτέ μην κωδικοποιείτε μυστικές τιμές στον πηγαίο κώδικα και μην τις εκθέτετε στο frontend. Διαβάστε τα κατά το χρόνο εκτέλεσης καλώντας ctx.getSecret().

Προαπαιτούμενα στοιχεία

  • Μια εφαρμογή Fabric με αρχικοποιημένες λειτουργίες. Για οδηγίες εγκατάστασης, ανατρέξτε στο θέμα Χρήση συναρτήσεων σε εφαρμογές Fabric.
  • Η εφαρμογή αναπτύχθηκε τουλάχιστον μία φορά με npx rayfin upτο . rayfin secret set και rayfin secret list να στοχεύσετε το ενεργό αναπτυγμένο στοιχείο και να αποτύχετε όταν δεν υπάρχει απομακρυσμένο τελικό σημείο.
  • Μια μυστική τιμή που απαιτείται από τη λειτουργία σας.

Ορίστε ένα μυστικό

Από τη ρίζα της εφαρμογής, ενεργοποιήστε τη λειτουργία λειτουργιών και ορίστε το μυστικό:

npx rayfin secret set API_KEY

Η εντολή ζητά την τιμή και καλύπτει την εισαγωγή σας. Για να ενημερώσετε ένα υπάρχον μυστικό, εκτελέστε ξανά την ίδια εντολή. Η νέα τιμή αντικαθιστά την υπάρχουσα τιμή.

Σημαντικός

Μην συμπεριλάβετε μια μυστική τιμή στην εντολή και μην την δεσμεύσετε στον έλεγχο προέλευσης.

Μυστικά λίστας

Καταγράψτε τα διαμορφωμένα μυστικά ονόματα:

npx rayfin secret list

Η εντολή εμφανίζει μυστικά ονόματα και χρονικές σημάνσεις, αλλά δεν εμφανίζει ποτέ μυστικές τιμές.

Πρόσβαση σε μυστικό από μια συνάρτηση

Καλέστε ctx.getSecret('NAME') για να ανακτήσετε ένα μυστικό για την τρέχουσα επίκληση. Η μέθοδος επιστρέφει undefined όταν δεν έχουν ρυθμιστεί οι παράμετροι του μυστικού κωδικού, επομένως χειριστείτε ρητά τους προαιρετικούς μυστικούς κωδικούς ή δώστε μια κατάλληλη προεπιλογή μη μυστικού.

Η ακόλουθη συνάρτηση λαμβάνει ένα αρχείο από ένα αποθετήριο GitHub. Τα δημόσια αποθετήρια δεν απαιτούν προσωπικό διακριτικό πρόσβασης (PAT). Για ιδιωτικά αποθετήρια, η συνάρτηση προσθέτει το GITHUB_PAT μυστικό στο αίτημα:

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

Ο κενός πίνακας συνδέσεων υποδεικνύει ότι η συνάρτηση δεν δηλώνει κοινό εξωτερικού πόρου. Ένα PAT είναι ένα μυστικό, όχι ένα διακριτικό πόρου που παρέχεται από την πλατφόρμα.

Ρύθμιση παραμέτρων μυστικών κωδικών ανά περιβάλλον

Δώστε μυστικές τιμές στο περιβάλλον όπου εκτελείται η συνάρτηση:

  • Τοπική ανάπτυξη: Προσθέστε μυστικές τιμές στην Values ενότητα του rayfin/functions/local.settings.json. Ο τοπικός κεντρικός υπολογιστής συναρτήσεων διαβάζει τις τιμές περιβάλλοντος συναρτήσεων από αυτό το αρχείο.
  • Fabric: Ρυθμίστε τους μυστικούς κωδικούς για το αναπτυγμένο στοιχείο στην πύλη Fabric.

Χρησιμοποιήστε το ίδιο μυστικό όνομα σε κάθε περιβάλλον. Για παράδειγμα, ρυθμίστε τις παραμέτρους GITHUB_PAT τοπικά και στο Fabric και, στη συνέχεια, διαβάστε το και στα ctx.getSecret('API_KEY') δύο περιβάλλοντα.

Σημαντικός

Μην δεσμεύετε μυστικές τιμές σε ή σε οποιοδήποτε άλλο αρχείο στο rayfin/functions/local.settings.json στοιχείο ελέγχου προέλευσης. Αποθηκεύστε μόνο μη μυστικά παραδείγματα ή σύμβολα κράτησης θέσης στα αρχεία που δεσμεύετε.