Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Avanserte koblingspolicyer (ACP) styrer koblingsbruk med en streng tillatelsesliste som blokkerer koblinger som standard. I tillegg til administrasjonssenteret for Power Platform kan du administrere ACP med kode ved hjelp av API-en for Power Platform og administrasjons-SDKene (admin). Automatisering av acp er nyttig når du standardiserer styring på tvers av mange miljøgrupper, replikerer en grunnlinjepolicy mellom grupper eller administrerer policyer som en del av et utrullingssamlebånd.
I denne opplæringen lærer du hvordan du kan gjøre følgende:
- Godkjenn ved hjelp av Power Platform API.
- Forstå acp-policyfiguren.
- Opprett en policy og legg den til i en miljøgruppe.
- Aktiver en individuell koblingshandling.
- Bruk eller oppdater en policy på ett enkelt miljø.
- Kopier en policy fra én miljøgruppe til en annen.
- Fjern acp fra en miljøgruppe.
Avanserte koblingspolicyer vises gjennom governance/ruleBasedPolicies driften av Power Platform API-en. En policy inneholder ett eller flere regelsett. Regelsettet med ID-en ConnectorManagement inneholder acp-koblingens tillatelsesliste. Alle eksempler i artikkelen bruker API-versjon 2024-10-01.
Forutsetninger
En appregistrering konfigurert for Power Platform API. Legg merke til appregistreringens program-ID ogkatalog-ID (leier).
Tillatelse til å administrere styringspolicyer. For tjenestekontohavere kan du tilordne en RBAC-rolle som kan skrive ressurser, for eksempel Power Platform-bidragsyter eller Power Platform-eier. Hvis du vil ha mer informasjon, kan du se Opplæring: Tilordne roller til tjenestekontohavere.
For SDK-eksemplene, installer SDK-et som utgis månedlig i det offentlige galleriet:
- C#: Microsoft. PowerPlatform.Management NuGet-pakke.
- Python: PyPI-pakken for powerplatform-management.
dotnet add package Microsoft.PowerPlatform.Managementpip install powerplatform-management
Trinn 1. Godkjenn med Power Platform API
Alle eksempler godkjennes med klient-ID-en for appregistreringen, og følger veiledningen i godkjenning. Eksemplene nedenfor logger på interaktivt som gjeldende bruker. Hvis du vil kjøre uovervåket som tjenestekontohaver, kan du se den konfidensielle klientflyten i godkjenningsartikkelen og tilordne tjenestekontohaveren en RBAC-rolle.
# Requires the MSAL.PS module: Install-Module MSAL.PS -Scope CurrentUser
Import-Module "MSAL.PS"
$clientId = "<application (client) ID of your app registration>"
$apiBaseUrl = "https://api.powerplatform.com"
$apiVersion = "2024-10-01"
# Sign in interactively and request a token for the Power Platform API
$auth = Get-MsalToken -ClientId $clientId -Scope "https://api.powerplatform.com/.default" -Interactive
$headers = @{ Authorization = "Bearer $($auth.AccessToken)" }
Trinn 2. Forstå acp-policyfiguren
En avansert koblingspolicy er en regelbasert policy som inneholder en regel som er angitt med ID-en ConnectorManagement. Dette regelsettet har et version og dets inputs sperring, AllowedConnectorListder hver oppføring tillater en kobling og angir hvordan handlingene og tilkoblingstypene styres:
{
"name": "Contoso ACP baseline",
"ruleSets": [
{
"id": "ConnectorManagement",
"version": "1.0",
"inputs": {
"AllowedConnectorList": [
{
"AllowedConnector": "/providers/Microsoft.PowerApps/apis/shared_office365",
"AllowedActionsMode": "AllAllowed",
"AllowedConnectionTypesMode": "AllAllowed"
},
{
"AllowedConnector": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps",
"AllowedActionsMode": "SomeAllowed",
"AllowedActions": ["GetItem", "CreateRecord"],
"AllowedConnectionTypesMode": "AllAllowed"
}
]
}
}
]
}
Husk følgende semantikk:
- En kobling som ikke er i
AllowedConnectorList, er blokkert (standard-nekt). - Hver oppføring angir
AllowedActionsMode.AllAllowedtillater hver handling på koblingen.SomeAllowedbegrenser koblingen til handlingene som er oppført i oppføringensAllowedActionsmatrise. Trinn 4 viser hvordan du legger til en handling og angir denne modusen. -
AllowedConnectionTypesModestyrer hvilke tilkoblingstyper som er tillatt, og følger sammeAllAllowedmønster. - Inkluder regelsettet
versionnår du oppretter eller oppdaterer en policy. Les den fra en eksisterende policy, og behold verdien som tjenesten returnerer.
Tips
Den nøyaktige verdien av AllowedConnector er koblingens ressursidentifikator. Den mest pålitelige måten å lære figuren for koblinger som allerede finnes i leieren, er å lese en eksisterende policy først (trinn 4 viser hvordan) eller bruke koblingskatalogen (beskrevet neste), og deretter speile denne figuren når du oppretter eller oppdaterer policyer.
Finne koblings- og handlings-ID-er med koblingskatalogen
Hvis du vil finne ut hvilke koblinger og handlinger du kan tillate, kan du bruke API-en for koblingskatalog. Den viser koblingene som er tilgjengelige i et miljø, sammen med identifikatorene du plasserer i AllowedConnector og AllowedActions.
Bemerkning
Tilkoblingskatalogoperasjonene krever en miljø-ID i banenog en OData $filter som angir det samme miljøet , for eksempel $filter=environment eq '<environmentId>'. Begge er obligatoriske.
$environmentId = "<environment ID>"
$filter = [uri]::EscapeDataString("environment eq '$environmentId'")
# List connectors available in the environment
$connectors = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/connectivity/environments/$environmentId/connectors?`$filter=$filter&api-version=$apiVersion" `
-Headers $headers
$connectors.value | Select-Object name, @{ n = "displayName"; e = { $_.properties.displayName } }
# Get a single connector by ID (the connector's name, such as shared_office365)
$connectorId = "shared_office365"
$connector = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/connectivity/environments/$environmentId/connectors/$connectorId?`$filter=$filter&api-version=$apiVersion" `
-Headers $headers
$connector.id # full resource path to use as AllowedConnector
Bruk koblingens id (den fullstendige ressursbanen, for eksempel /providers/Microsoft.PowerApps/apis/shared_office365) som AllowedConnector verdien, og koblingens operasjons-ID-er som verdiene i AllowedActions. Du kan få tilgang til den samme katalogen gjennom navneområdet connectivity til administrator-SDK-er.
Trinn 3. Opprette en policy og legge den til i en miljøgruppe
Å legge til acp i en miljøgruppe er en todelt operasjon: Opprett policyen, og tilordne den deretter til gruppen. Opprettingskallet returnerer den nye policyen idsom du bruker i tildelingskallet.
Hvis du vil tilordne policyen til hele gruppen, sender du en oppgaveforespørsel med en tom brødtekst ({}). Hvert miljø i gruppen arver policyen og forblir synkronisert med den.
$environmentGroupId = "<environment group ID>"
# 1. Create the policy with a ConnectorManagement rule set
$policyBody = @{
name = "Contoso ACP baseline"
ruleSets = @(
@{
id = "ConnectorManagement"
version = "1.0"
inputs = @{
AllowedConnectorList = @(
@{
AllowedConnector = "/providers/Microsoft.PowerApps/apis/shared_office365"
AllowedActionsMode = "AllAllowed"
AllowedConnectionTypesMode = "AllAllowed"
}
)
}
}
)
} | ConvertTo-Json -Depth 10
$policy = Invoke-RestMethod -Method Post `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $policyBody
Write-Host "Created policy $($policy.id)"
# 2. Assign the policy to the environment group (empty body = whole group)
Invoke-RestMethod -Method Post `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$($policy.id)/environmentGroups/$environmentGroupId/assignments?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body "{}"
Write-Host "Assigned policy $($policy.id) to group $environmentGroupId"
Trinn 4. Aktiver en individuell koblingshandling
Hvis du bare vil tillate bestemte handlinger på en kobling, angir AllowedActionsMode du den til SomeAllowed og viser de tillatte handlingene i AllowedActions. Dette eksemplet legger til en handling, for eksempel en skjult handling som ikke kan velges i administrasjonssenteret, i en koblings tillatelsesliste og setter koblingen til SomeAllowed. Les policyen, oppdater koblingsoppføringen og send den oppdaterte regelen som er angitt ved hjelp av oppdatering. Patch oppdaterer en regel som er angitt av ID, og lar policyens andre regelsett være uberørte.
$policyId = "<policy ID>"
$connectorId = "shared_commondataserviceforapps" # last segment of AllowedConnector
$actionToAdd = "aibuilderpredict_customprompt"
# 1. Read the current policy
$policy = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$policyId`?api-version=$apiVersion" `
-Headers $headers
# 2. Find the ConnectorManagement rule set and the connector entry
$ruleSet = $policy.ruleSets | Where-Object { $_.id -eq "ConnectorManagement" }
$entry = $ruleSet.inputs.AllowedConnectorList |
Where-Object { ($_.AllowedConnector -split "/")[-1] -eq $connectorId }
# 3. Restrict the connector to specific actions: add the action and set SomeAllowed
if ($entry) {
$actions = @()
if ($entry.PSObject.Properties.Name -contains "AllowedActions") { $actions = @($entry.AllowedActions) }
if ($actions -notcontains $actionToAdd) { $actions += $actionToAdd }
$entry | Add-Member -NotePropertyName AllowedActions -NotePropertyValue $actions -Force
$entry.AllowedActionsMode = "SomeAllowed"
# 4. Patch only the modified rule set back to the policy
$patchBody = @{ name = $policy.name; ruleSets = @($ruleSet) } | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Patch `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$policyId`?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $patchBody
Write-Host "Set '$connectorId' to SomeAllowed with '$actionToAdd' in policy $policyId"
}
Trinn 5. Bruke eller oppdatere en policy på ett enkelt miljø
Du kan målrette en policy mot ett enkelt miljø i stedet for en miljøgruppe. Denne fremgangsmåten er nyttig for miljøer med høy risiko, pilot eller regulerte miljøer. Tilordne policyen til miljøet, og bruk det samme oppdateringsmønsteret fra trinn 4 til å endre den senere. Hvert miljø støtter én effektiv acp-policy.
$policyId = "<policy ID>"
$environmentId = "<environment ID>"
# Assign the policy directly to the environment
Invoke-RestMethod -Method Post `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$policyId/environments/$environmentId/assignments?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body "{}"
Write-Host "Assigned policy $policyId to environment $environmentId"
Trinn 6. Kopiere en policy fra én miljøgruppe til en annen
Når du replikerer en opprinnelig plan for styring til en annen gruppe, velger du hvor mye du vil kopiere ved hjelp CopyAllRules av flagget:
-
CopyAllRules = true: Opprett en ny policy fra alle kildegruppens regelsett, og tilordne den til målgruppen. Målgruppens styring blir en uavhengig kopi av kilden. -
CopyAllRules = false: Trekk ut bareConnectorManagementregelen som er angitt fra kildepolicyen, og slå den sammen til målgruppens eksisterende policy. Oppdateringsoperasjonen legger til eller oppdaterer regelen angitt av ID, slik at målgruppen beholder de andre reglene.
$sourceGroupId = "<source environment group ID>"
$targetGroupId = "<target environment group ID>"
$CopyAllRules = $true
# 1. Find and read the policy assigned to the source group
$sourceAssignments = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/environmentGroups/$sourceGroupId/assignments?api-version=$apiVersion" `
-Headers $headers
$sourcePolicyId = $sourceAssignments.value[0].policyId
$source = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$sourcePolicyId`?api-version=$apiVersion" `
-Headers $headers
if ($CopyAllRules) {
# 2a. Copy ALL rule sets into a new policy and assign it to the target group
$copyBody = @{ name = "$($source.name) (copy)"; ruleSets = $source.ruleSets } | ConvertTo-Json -Depth 20
$copy = Invoke-RestMethod -Method Post `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $copyBody
Invoke-RestMethod -Method Post `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$($copy.id)/environmentGroups/$targetGroupId/assignments?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body "{}"
Write-Host "Copied all rules to policy $($copy.id) and assigned it to group $targetGroupId"
}
else {
# 2b. Merge ONLY the ConnectorManagement rule into the target group's existing policy
$sourceCm = $source.ruleSets | Where-Object { $_.id -eq "ConnectorManagement" }
$targetAssignments = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/environmentGroups/$targetGroupId/assignments?api-version=$apiVersion" `
-Headers $headers
$targetPolicyId = $targetAssignments.value[0].policyId
$targetPolicy = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$targetPolicyId`?api-version=$apiVersion" `
-Headers $headers
# Patch adds or updates the ConnectorManagement rule set by ID, keeping the target's other rules
$patchBody = @{ name = $targetPolicy.name; ruleSets = @($sourceCm) } | ConvertTo-Json -Depth 20
Invoke-RestMethod -Method Patch `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$targetPolicyId`?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $patchBody
Write-Host "Merged the ConnectorManagement rule into target policy $targetPolicyId"
}
Trinn 7. Fjerne acp fra en miljøgruppe
Selv om en gruppe har en aktiv ACP-regel, samsvarer alle miljøer i gruppen med gruppens policy. Hvordan du fjerner håndhevelse avhenger av om du vil at disse miljøene skal beholde gjeldende konfigurasjon eller fjerne acp helt:
-
Fjern regelen fra gruppens policy for å hindre at gruppen administrerer acp.
removeRuleBruk operasjonen til å fjerneConnectorManagementregelsettet fra gruppens policy. Miljøene beholder den sist brukte ACP-konfigurasjonen, men de holdes ikke lenger synkronisert med gruppen. Du kan administrere hvert miljø individuelt og la dem avvike. -
Fjern ACP fra gruppen og fra alle miljøer for å deaktivere ACP overalt. Fjern regelen fra gruppens policy, gå deretter gjennom gruppens miljøer og fjern
ConnectorManagementregelsettet fra hvert miljøs policy også.
Bemerkning
Hvis du fjerner regelen fra en gruppepolicy, fjernes ikke acp automatisk fra miljøene som arvet den. Disse miljøene beholder sin sist brukte konfigurasjon for å unngå et håndhevelsesgap. Hvis du vil fjerne ACP overalt, fjerner du det fra hvert miljø, som vist i løkkeeksempelet. Hvis du vil ha mer informasjon, kan du se Avanserte koblingspolicyer.
Fjerne regelen fra gruppens policy
Følgende eksempel fjerner ConnectorManagement regelsettet fra en policy ved hjelp removeRule av operasjonen.
$policyId = "<policy ID>"
# Read the policy, then send the rule set to remove
$policy = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$policyId`?api-version=$apiVersion" `
-Headers $headers
$ruleSet = $policy.ruleSets | Where-Object { $_.id -eq "ConnectorManagement" }
$body = @{ name = $policy.name; ruleSets = @($ruleSet) } | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Patch `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$policyId/removeRule?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $body
Write-Host "Removed the ConnectorManagement rule set from policy $policyId"
Fjerne acp fra alle miljøer i gruppen
Hvis du vil deaktivere acp på tvers av alle miljøer i en gruppe, må du først fjerne regelen fra gruppens policy (forrige eksempel), og deretter gjenta fjerningen for hvert miljøs egen policy. Les hvert miljøs tilordnede policy fra miljøtilordningen, og kall removeRule deretter til denne policyen. Angi miljø-ID-er som tilhører gruppen, eller nummerer dem ved hjelp av API-ene for miljøadministrasjon.
# Environment IDs that belong to the group
$environmentIds = @("<environment ID 1>", "<environment ID 2>")
foreach ($environmentId in $environmentIds) {
# Find the policy currently assigned to the environment
$envAssignments = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/environments/$environmentId/assignments?api-version=$apiVersion" `
-Headers $headers
if (-not $envAssignments.value) { continue }
$envPolicyId = $envAssignments.value[0].policyId
# Remove the ConnectorManagement rule set from that environment's policy
$envPolicy = Invoke-RestMethod -Method Get `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$envPolicyId`?api-version=$apiVersion" `
-Headers $headers
$ruleSet = $envPolicy.ruleSets | Where-Object { $_.id -eq "ConnectorManagement" }
if ($ruleSet) {
$body = @{ name = $envPolicy.name; ruleSets = @($ruleSet) } | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Patch `
-Uri "$apiBaseUrl/governance/ruleBasedPolicies/$envPolicyId/removeRule?api-version=$apiVersion" `
-Headers $headers -ContentType "application/json" -Body $body
Write-Host "Removed ACP from environment $environmentId"
}
}
Det samme per miljø-kallet removeRule fungerer med C# og Python SDK-er som vises tidligere. Bryt samtalen i en løkke over gruppens miljø-ID-er.
Relatert innhold
Avanserte koblingspolicyer
Regelbaserte policyer – REST-API-referanse
Godkjenning
Veiledning: Tilordne roller til tjenesteprincipaler
Oversikt over programmerbarhet og utvidbarhet