ربط الإدخال السري ل Dapr لوظائف Azure

يسمح لك ربط إدخال البيانات السرية Dapr بقراءة بيانات البيانات السرية كإدخال أثناء تنفيذ الدالة.

للحصول على معلومات حول تفاصيل الإعداد والتكوين لملحق Dapr، راجع نظرة عامة على ملحق Dapr.

مثال

يمكن إنشاء وظيفة #C باستخدام أحد أوضاع C# التالية:

نموذج التنفيذ ‏‏الوصف
نموذج عامل معزول تعمل تعليمة دالتك البرمجية في عملية عامل .NET منفصلة. استخدم مع الإصدارات المدعومة من .NET و.NET Framework. لمعرفة المزيد، راجع تطوير وظائف معالجة العامل المعزولة .NET.
نموذج قيد المعالجة تعمل تعليمة دالتك البرمجية في نفس العملية مثل عملية مضيف الدالات. يدعم إصدارات الدعم طويل الأجل (LTS) فقط من .NET. لمعرفة المزيد، راجع تطوير وظائف مكتبة فئة .NET.
[FunctionName("RetrieveSecret")]
public static void Run(
    [DaprServiceInvocationTrigger] object args,
    [DaprSecret("kubernetes", "my-secret", Metadata = "metadata.namespace=default")] IDictionary<string, string> secret,
    ILogger log)
{
    log.LogInformation("C# function processed a RetrieveSecret request from the Dapr Runtime.");
}

ينشئ المثال التالي دالة "RetreveSecret" باستخدام DaprSecretInput الربط مع DaprServiceInvocationTrigger:

@FunctionName("RetrieveSecret")
public void run(
    @DaprServiceInvocationTrigger(
        methodName = "RetrieveSecret") Object args,
    @DaprSecretInput(
        secretStoreName = "kubernetes", 
        key = "my-secret", 
        metadata = "metadata.namespace=default") 
        Map<String, String> secret,
    final ExecutionContext context)

في المثال التالي، يتم إقران ربط الإدخال السري ل Dapr بمشغل استدعاء Dapr، والذي تم تسجيله بواسطة app الكائن:

const { app, trigger } = require('@azure/functions');

app.generic('RetrieveSecret', {
    trigger: trigger.generic({
        type: 'daprServiceInvocationTrigger',
        name: "payload"
    }),
    extraInputs: [daprSecretInput],
    handler: async (request, context) => {
        context.log("Node function processed a RetrieveSecret request from the Dapr Runtime.");
        const daprSecretInputValue = context.extraInputs.get(daprSecretInput);

        // print the fetched secret value
        for (var key in daprSecretInputValue) {
            context.log(`Stored secret: Key=${key}, Value=${daprSecretInputValue[key]}`);
        }
    }
});

تظهر الأمثلة التالية مشغلات Dapr في ملف function.json ورمز PowerShell الذي يستخدم هذه الروابط.

فيما يلي ملف function.json ل daprServiceInvocationTrigger:

{
  "bindings": 
    {
      "type": "daprSecret",
      "direction": "in",
      "name": "secret",
      "key": "my-secret",
      "secretStoreName": "localsecretstore",
      "metadata": "metadata.namespace=default"
    }
}

لمزيد من المعلومات حول خصائص الملف function.json ، راجع قسم التكوين .

في التعليمات البرمجية:

using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq

param (
    $payload, $secret
)

# PowerShell function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a RetrieveSecretLocal request from the Dapr Runtime."

# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $secret | ConvertTo-Json

Write-Host "$jsonString"

يظهر المثال التالي ربط إدخال Dapr Secret، والذي يستخدم نموذج برمجة v2 Python. لاستخدام daprSecret الربط جنبا إلى جنب مع في التعليمات البرمجية daprServiceInvocationTrigger لتطبيق وظيفة Python:

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="RetrieveSecret")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveSecret")
@app.dapr_secret_input(arg_name="secret", secret_store_name="localsecretstore", key="my-secret", metadata="metadata.namespace=default")
def main(payload, secret: str) :
    # Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveSecret  --data '{}'
    logging.info('Python function processed a RetrieveSecret request from the Dapr Runtime.')
    secret_dict = json.loads(secret)

    for key in secret_dict:
        logging.info("Stored secret: Key = " + key +
                     ', Value = ' + secret_dict[key])

السمات

في النموذج قيد المعالجة، استخدم DaprSecret لتعريف ربط إدخال البيانات السرية Dapr، والذي يدعم هذه المعلمات:

المعلمة ‏‏الوصف‬
اسم مخزن البيانات السرية اسم المخزن السري للحصول على السر.
المفتاح المفتاح الذي يحدد اسم السر الذي يجب الحصول عليه.
بيانات التعريف اختياري. صفيف من خصائص بيانات التعريف في النموذج "key1=value1&key2=value2".

تعليقات توضيحية

DaprSecretInput يسمح لك التعليق التوضيحي بالوصول إلى البيانات السرية لدالتك.

العنصر الوصف
اسم مخزن البيانات السرية اسم مخزن Dapr السري.
مفتاح قيمة المفتاح السري.
بيانات التعريف اختياري. قيم بيانات التعريف.

التكوين

يوضح الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في التعليمات البرمجية.

الخاصية ‏‏الوصف
مفتاح قيمة المفتاح السري.
اسم مخزن البيانات السرية اسم المخزن السري كما هو محدد في ملف المكون local-secret-store.yaml .
بيانات التعريف مساحة اسم بيانات التعريف.

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خاصية function.json ‏‏الوصف
مفتاح قيمة المفتاح السري.
اسم مخزن البيانات السرية اسم المخزن السري كما هو محدد في ملف المكون local-secret-store.yaml .
بيانات التعريف مساحة اسم بيانات التعريف.

يوضح الجدول التالي خصائص تكوين الربط التي @dapp.dapr_secret_input قمت بتعيينها في التعليمات البرمجية ل Python.

الخاصية ‏‏الوصف
secret_store_name اسم المخزن السري.
مفتاح قيمة المفتاح السري.
بيانات التعريف مساحة اسم بيانات التعريف.

راجع قسم Example للحصول على أمثلة كاملة.

الاستخدام

لاستخدام ربط إدخال البيانات السرية ل Dapr، ابدأ بإعداد مكون مخزن البيانات السرية ل Dapr. يمكنك معرفة المزيد حول المكون الذي يجب استخدامه وكيفية إعداده في وثائق Dapr الرسمية.

لاستخدام daprSecret في Python v2، قم بإعداد مشروعك باستخدام التبعيات الصحيحة.

  1. إنشاء بيئة ظاهرية وتنشيطها.

  2. في الملف، requirements.text أضف السطر التالي:

    azure-functions==1.18.0b3
    
  3. في المحطة الطرفية، قم بتثبيت مكتبة Python.

    pip install -r .\requirements.txt
    
  4. قم بتعديل الملف الخاص بك local.setting.json بالتكوين التالي:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

الخطوات التالية

تعرف على المزيد حول أسرار Dapr.