Freigeben über


AttestationAdministrationClient.SetPolicyAsync Methode

Definition

Legt die Nachweisrichtlinie für den angegebenen AttestationTypefest.

public virtual System.Threading.Tasks.Task<Azure.Security.Attestation.AttestationResponse<Azure.Security.Attestation.PolicyModificationResult>> SetPolicyAsync (Azure.Security.Attestation.AttestationType attestationType, string policyToSet, Azure.Security.Attestation.AttestationTokenSigningKey signingKey = default, System.Threading.CancellationToken cancellationToken = default);
abstract member SetPolicyAsync : Azure.Security.Attestation.AttestationType * string * Azure.Security.Attestation.AttestationTokenSigningKey * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Azure.Security.Attestation.AttestationResponse<Azure.Security.Attestation.PolicyModificationResult>>
override this.SetPolicyAsync : Azure.Security.Attestation.AttestationType * string * Azure.Security.Attestation.AttestationTokenSigningKey * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Azure.Security.Attestation.AttestationResponse<Azure.Security.Attestation.PolicyModificationResult>>
Public Overridable Function SetPolicyAsync (attestationType As AttestationType, policyToSet As String, Optional signingKey As AttestationTokenSigningKey = Nothing, Optional cancellationToken As CancellationToken = Nothing) As Task(Of AttestationResponse(Of PolicyModificationResult))

Parameter

attestationType
AttestationType

AttestationType deren Richtlinie festgelegt werden soll.

policyToSet
String

Gibt die festzulegende Nachweisrichtlinie an.

signingKey
AttestationTokenSigningKey

Falls angegeben, gibt den Signaturschlüssel an, der zum Signieren der Anforderung beim Nachweisdienst verwendet wird.

cancellationToken
CancellationToken

Abbruchtoken, das zum Abbrechen dieses Vorgangs verwendet wird.

Gibt zurück

Ein AttestationResponse<T> mit der Richtlinie für den angegebenen Nachweistyp.

Hinweise

Wenn der signingKey Parameter nicht angegeben wird, wird das an den Nachweisdienst gesendete Richtliniendokument nicht signiert. Nachweisrichtlinien ohne Vorzeichen sind nur zulässig, wenn der Nachweis instance im AAD-Modus ausgeführt wird. Wenn der Nachweis instance im isolierten Modus ausgeführt wird, müssen ein Signaturschlüssel und ein Signaturzertifikat bereitgestellt werden, um sicherzustellen, dass der Aufrufer der API berechtigt ist, die Richtlinie zu ändern. Das Certificate Feld MUSS eines der von der GetPolicyManagementCertificates(CancellationToken) API zurückgegebenen Zertifikate sein.

Clients müssen überprüfen können, ob das Dokument der Nachweisrichtlinie nicht geändert wurde, bevor das Richtliniendokument von der Enklave des Nachweisdiensts empfangen wurde. Im [PolicyResult][attestation_policy_result] werden zwei Eigenschaften bereitgestellt, die verwendet werden können, um zu überprüfen, ob der Dienst das Richtliniendokument erhalten hat:

Um den Hash zu überprüfen, können Clients ein Nachweistoken generieren und den aus diesem Token generierten Hash überprüfen:
// The SetPolicyAsync API will create an AttestationToken signed with the TokenSigningKey to transmit the policy.
// To verify that the policy specified by the caller was received by the service inside the enclave, we
// verify that the hash of the policy document returned from the Attestation Service matches the hash
// of an attestation token created locally.
TokenSigningKey signingKey = new TokenSigningKey(<Customer provided signing key>, <Customer provided certificate>)
var policySetToken = new AttestationToken(
    BinaryData.FromObjectAsJson(new StoredAttestationPolicy { AttestationPolicy = attestationPolicy }),
    signingKey);

using var shaHasher = SHA256Managed.Create();
byte[] attestationPolicyHash = shaHasher.ComputeHash(Encoding.UTF8.GetBytes(policySetToken.Serialize()));

Debug.Assert(attestationPolicyHash.SequenceEqual(setResult.Value.PolicyTokenHash.ToArray()));

Wenn der Signaturschlüssel und das Zertifikat nicht bereitgestellt werden, erstellt die SetPolicyAsync-API ein ungesichertes Nachweistoken, das die Nachweisrichtlinie umgibt. Um den PolicyTokenHash Rückgabewert zu überprüfen, kann ein Entwickler einen eigenen AttestationToken erstellen und den Hash davon erstellen.

using var shaHasher = SHA256Managed.Create();
var policySetToken = new AttestationToken(new StoredAttestationPolicy { AttestationPolicy = disallowDebugging });
disallowDebuggingHash = shaHasher.ComputeHash(Encoding.UTF8.GetBytes(policySetToken.ToString()));

Gilt für: