Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Deployed Functions kutsuu ulkoisia Azure- ja Fabric-resursseja sovelluksen identiteetiksi sovelluksen tunnistautumisen avulla. Määritä yleisöt funktion tarvitsema ja käytä alustan tarjoamia, resurssipohjaisia tokeneita kautta ctx.Tokens.
Kehittäjän CLI-kirjautuminen ja authoring-time endpoint -tunnistus ovat erillisiä käyttöönotosta ajonaikaisesta käytöstä. Varmista käyttöön otetun sovelluksen identiteetin oikeudet, vaikka kehittäjä voisi käyttää resurssia.
Edellytykset
- Fabric-sovellus, jossa Functions on alustettu. Asennusohjeet löydät kohdasta Use Functions in Fabric Apps.
-
services.functions.auth.typeasetettuna .applicationrayfin/rayfin.ymlKonfiguraation yksityiskohdat löytyvät sovelluksen tunnistautumisesta. - Sovelluksen identiteetti antoi pääsyn jokaiseen ulkoiseen resurssiin, jota funktiokoodi kutsuu.
Ilmoita ulkoinen yhteys
Ilmoita yleisöt merkinnöissä RayfinContext ja lue sitten scoped-token :ctx.Tokens
import {
UserDataFunctions,
AudienceType,
type RayfinContext,
} from '@microsoft/fabric-user-data-functions';
const udf = new UserDataFunctions();
udf.func(
'accessStorage',
async (
ctx: RayfinContext<AppSchema, AudienceType.Storage>,
): Promise<string> => {
const token: string = ctx.Tokens.Storage;
// Use the token with the resource SDK or REST API.
return 'ok';
},
[],
);
Merkintä on julistus. Yleisön listaaminen RayfinContext<Schema, Audiences> rekisteröi yhteyden sidonnan. Pidä kolmas argumentti udf.func() as [].
ctx.Tokens on rajattu niihin yleisöihin, jotka ilmoitat. Ilmoittamaton yleisö aiheuttaa käännösvirheen:
async (
ctx: RayfinContext<AppSchema, AudienceType.Sql | AudienceType.Storage>,
) => {
const sqlToken: string = ctx.Tokens.Sql;
const storageToken: string = ctx.Tokens.Storage;
};
Token-arvoilla on tyyppi string . Yleisön julistaminen rekisteröi sen sitomisen, mutta ei takaa tokenien saatavuutta tai resurssien käyttöä. Jos isäntä ei toimita ilmoitettua tokenia, sen ctx.Tokens ominaisuuden lukeminen antaa virheen.
Määrittele skeema-argumentti
RayfinContext Ota ensin sovellusskeema. Käytä samaa skeemaa, johon syötät RayfinClient<AppSchema> , jotta dataasiakas pysyy tyypitettynä, kun lisäät yleisöjä:
async (ctx: RayfinContext<AppSchema, AudienceType.Sql>) => {
const data = ctx.getDataClient();
const token = ctx.Tokens.Sql;
};
Jos funktio tarvitsee yleisöjä mutta ei pääse Rayfin-tietokantaan, välitä oletusskeema eksplisiittisesti:
async (ctx: RayfinContext<Record<string, any>, AudienceType.Fabric>) => {
const token = ctx.Tokens.Fabric;
};
Tuetut yleisöt
AudienceType on totuuden lähde tuetuille yleisöille:
| Ulkoinen resurssi | AudienceType |
|---|---|
| Fabric lakehouse, warehouse, SQL-tietokanta Fabric-muodossa, peilattu tietokanta tai Azure SQL Database | Sql |
| Fabric OneLake files, Azure Blob Storage, Azure Table storage, or Azuren jonotallennustila | Storage |
| Microsoft Fabric REST API | Fabric |
| Azure AI Foundry | AzureAI |
| Azure DevOps | ADO |
Power BI:n semanttista mallia ei ole saatavilla .ctx.Tokens Käytä liitintä fabric-semanticmodel sen sijaan. Liitinohjeita löytyy osoitteesta Connect to Fabric data.
Ymmärrä käyttöönoton metatiedot
Tyyppiargumentit pyyhitään pois ennen kuin funktio käynnistyy. Aikana npx rayfin up, TypeScript-kääntäjä ratkaisee ilmoitetut yleisöt ja kirjoittaa unionin käyttöönoton metatietoihin. Funktioiden työntekijä käyttää tätä metatietoa yhteyksien sitomiseen.
Tyyppialias toimii, kun Functions-projektissa on tsconfig.json:
type SqlAccess = AudienceType.Sql;
async (ctx: RayfinContext<AppSchema, SqlAccess>) => {
const token = ctx.Tokens.Sql;
};
Suosi kirjaimellisia AudienceType.X arvoja. Jos Functions-projektissa ei tsconfig.jsonole , CLI ei voi käyttää kääntäjää ja lukee sen sijaan annotaatiosyntaksin. Tässä tilassa alias ratkeaa omaan nimeensä eikä edustamaansa yleisöön. Pidä komentokeskuksen varoitus tästä varasuunnitelmasta korjattavana virheenä.
Kontekstiparametrilla täytyy olla eksplisiittinen RayfinContext<...> merkintä. Tyypin generointi tunnistaa kontekstiparametrin tämän merkinnän avulla. Ilman sitä parametri käsitellään request-body -parametrina.
Myönnä resurssiluvat
Nykyisissä Fabric-sovelluksissa sovelluksen identiteetti on Fabric-sovelluksen kohteen omistaja. Ulkoiset yhteydet käyttävät tätä identiteettiä ja sen oikeuksia, eivät sovelluksen käyttäjän identiteettiä tai käyttöoikeuksia, joka kutsuu funktion.
Myönnä sovelluksen identiteetti kaikki resurssit ja rajapinnat, joita funktiokoodi kutsuu. Yleisön määrittäminen ja funktioiden käyttöönotto rekisteröivät token-sidonnan, mutta eivät myönnä oikeuksia kohderesurssille.
Pidä resurssitokenit palvelimella. Älä koskaan palauta niitä funktion tuloksina tai lähetä niitä frontendiin.
Sovelluksen kirjautuminen ja valtuutus toiminnon käynnistämiseen ovat erillisiä, jos sovellus-identiteetti käyttää ulkoisia resursseja.
Rayfin DB -identiteetti
Rayfin DB käyttää erillistä todennuspolkua.
ctx.getDataClient() käyttää kutsun Rayfin-tokenia, joten tietokanta säilyttää kutsujan identiteetin ja tietokantaoikeudet. Sovelluksen todennus funktioille ei vaihda Rayfin DB:n pääsyä sovelluksen identiteettiin.
Käytä tokenia, jossa on Azure SDK
Monet Azure SDK:n asiakkaat odottavat TokenCredential raakan token-merkkijonon sijaan. Määritellään sovitin, joka palauttaa tokenin kontekstista:
import type { TokenCredential, AccessToken } from '@azure/identity';
class ContextTokenCredential implements TokenCredential {
constructor(private readonly token: string) {}
async getToken(): Promise<AccessToken> {
return {
token: this.token,
expiresOnTimestamp: Date.now() + 3600_000,
};
}
}
Pass new ContextTokenCredential(ctx.Tokens.Storage) tai sopiva ilmoitettu token SDK-asiakkaalle, joka vaatii tunnuksen. Asenna resurssi-SDK-paketit , rayfin/functions/package.jsonälä projektin juureen.
Kehitä paikallisesti
npx rayfin devja npx rayfin dev functions apply käynnistää paikallinen Azure-funktiot Core Tools -isäntäpalvelu. Paikallisessa Functions-isännässä ulkoiset resurssitunnukset käyttävät tilin identiteettiä ja käyttöoikeuksia, joita sovelluskehittäjä käyttää kirjautumiseen.
Deployed-funktiot käyttävät sen sijaan sovelluksen identiteettiä. Onnistunut paikallinen puhelu ei siis todista, että käytössä oleva sovellus-identiteetti saa oikeuden käyttää resurssia. Testaa käyttöön otettu funktio sen jälkeen, kun sovellushenkilöllisyydelle on myönnetty tarvittavat oikeudet.
Liittyvä sisältö
- Käytä funktioita Fabric-sovelluksissa
- Yhdistä Fabric-dataan
- Hallinnoi funktion salaisuuksia
Ota käyttöön Fabric-sovellus Fabric