Aracılığıyla paylaş


ApiCenter Minimal İzinler Eklentisi

Uygulamanın API'leri çağırmak için en düşük izinleri kullanıp kullanmadiğini denetler. Belirtilen Azure API Center örneğindeki API bilgilerini kullanır.

Kaydedilen API isteklerinin belirteçleri en düşük API izinlerini kullanıp kullanmadiğini denetlemeyi gösteren Dev Proxy'yi gösteren komut isteminin ekran görüntüsü.

Eklenti örneği tanımı

{
  "name": "ApiCenterMinimalPermissionsPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "apiCenterMinimalPermissionsPlugin"
}

Yapılandırma örneği

{
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "resource-group-name",
    "serviceName": "apic-instance",
    "workspaceName": "default"
  }
}

Yapılandırma özellikleri

Özellik Açıklama Varsayılan
resourceGroupName Azure API Center'ın bulunduğu kaynak grubunun adı. Hiçbiri
serviceName Geliştirme Proxy'sinin uygulamada kullanılan API'lerin kayıtlı olup olmadığını denetlemek için kullanması gereken Azure API Center örneğinin adı. Hiçbiri
subscriptionId Azure API Center örneğinin bulunduğu Azure aboneliğinin kimliği. Hiçbiri
workspace Kullanılacak Azure API Center çalışma alanının adı. default
schemeName En düşük izinleri belirlemek için kullanılan güvenlik şeması tanımının adı. Belirtilmezse eklenti, belirtimdeki ilk oauth2 düzenindeki bilgileri okur Hiçbiri

Komut satırı seçenekleri

Hiçbiri

Açıklamalar

Eklenti, ApiCenterMinimalPermissionsPlugin uygulamanın API'leri çağırmak için en düşük izinleri kullanıp kullanmadiğini denetler. Eklenti, izinleri denetlemek için belirtilen Azure API Center örneğinde kayıtlı API'ler hakkındaki bilgileri kullanır.

Azure API Center'a bağlanma

Eklenti, Azure API Center'a bağlanmak için Azure kimlik bilgilerini kullanır (şu sırayla):

  • Ortam
  • İş Yükü Kimliği
  • Yönetilen Kimlik
  • Visual Studio
  • Visual Studio Code
  • Azure Komut Satırı Arayüzü (Azure CLI)
  • Azure PowerShell
  • Azure Geliştirici CLI

Eklenti Azure'a erişmek için erişim belirteci alamazsa bir hata gösterir ve Dev Proxy bunu devre dışı bırakır. Bu araçlardan birini kullanarak Azure'da oturum açın ve eklentiyi kullanmak için Dev Proxy'yi ApiCenterMinimalPermissionsPlugin yeniden başlatın.

CI/CD işlem hatlarında Dev Proxy kullanıyorsanız, , subscriptionId, resourceGroupNameve serviceName özellikleri için workspaceNamedeğerleri ortam değişkenleri olarak geçirebilirsiniz. Ortam değişkenlerini kullanmak için değerin adını bir @ile ekleyin, örneğin:

{
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "@AZURE_SUBSCRIPTION_ID",
    "resourceGroupName": "@AZURE_RESOURCE_GROUP_NAME",
    "serviceName": "@AZURE_APIC_INSTANCE_NAME",
    "workspaceName": "@AZURE_APIC_WORKSPACE_NAME"
  }
}

Bu örnekte, eklenti , ApiCenterMinimalPermissionsPlugin , ve özelliklerini sırasıyla , subscriptionId, resourceGroupNameve serviceName ortam değişkenlerinin workspaceNamedeğerlerine ayarlarAZURE_SUBSCRIPTION_ID.AZURE_RESOURCE_GROUP_NAMEAZURE_APIC_INSTANCE_NAMEAZURE_APIC_WORKSPACE_NAME

API izinlerini tanımlama

Eklenti, Azure API Center'da ApiCenterMinimalPermissionsPlugin kayıtlı OAuth ile güvenliği sağlanan API'ler için OAuth izinlerini denetlemeyi destekler. Eklenti, API Center'daki bilgileri kullanarak uygulamada kullanılan API'leri çağırmak için gereken en düşük izinleri hesaplar. Daha sonra eklenti, JSON Web Belirteci (JWT) belirtecinde kullanılan izinleri Dev Proxy'nin kaydettiği istekler için gereken en düşük kapsamlarla karşılaştırır.

API'lerinizin izinlerini tanımlamak için bunları API'nizin OpenAPI tanımına ekleyin. Aşağıdaki örnekte, OpenAPI tanımında BIR API için izinlerin nasıl tanımlanacağı gösterilmektedir:

{
  "openapi": "3.0.1",
  "info": {
    "title": "Northwind API",
    "description": "Northwind API",
    "version": "v1.0"
  },
  "servers": [
    {
      "url": "https://api.northwind.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
            "tokenUrl": "https://login.microsoftonline.com/common/oauth2/token",
            "scopes": {
              "customer.read": "Grants access to ready customer info",
              "customer.readwrite": "Grants access to read and write customer info"
            }
          }
        }
      }
    },
    "schemas": {
      "Customer": {
        "type": "object",
        // [...] trimmed for brevity
      }
    }
  },
  "paths": {
    "/customers/{customers-id}": {
      "description": "Provides operations to manage a customer",
      "get": {
        "summary": "Get customer by ID",
        "operationId": "getCustomerById",
        "security": [
          {
            "OAuth2": [
              "customer.read"
            ]
          },
          {
            "OAuth2": [
              "customer.readwrite"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update customer by ID",
        "operationId": "updateCustomerById",
        "security": [
          {
            "OAuth2": [
              "customer.readwrite"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "parameters": [
        {
          "name": "customers-id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    }
  },
  "x-ms-generated-by": {
    "toolName": "Dev Proxy",
    "toolVersion": "0.27.0"
  }
}

İlgili bölüm, API'nin securitySchemes kullandığı OAuth kapsamlarını tanımladığınız bölümdür. Ardından, her işlem için bölümüne gerekli kapsamları security eklersiniz.

Daha Fazla Bilgi

Sonraki adım