Compartilhar via


AttestationAdministrationClient.SetPolicyAsync Método

Definição

Define a política de atestar para o especificado AttestationType.

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))

Parâmetros

attestationType
AttestationType

AttestationType cuja política deve ser definida.

policyToSet
String

Especifica a política de atestado a ser definida.

signingKey
AttestationTokenSigningKey

Se fornecido, especifica a chave de assinatura usada para assinar a solicitação para o serviço de atestado.

cancellationToken
CancellationToken

Token de cancelamento usado para cancelar esta operação.

Retornos

Um AttestationResponse<T> com a política para o tipo de atestado especificado.

Comentários

Se o signingKey parâmetro não for fornecido, o documento de política enviado ao serviço de atestado não será assinado. Políticas de atestado não assinadas só são permitidas quando a instância de atestado está em execução no modo AAD – se a instância de atestado estiver em execução no modo Isolado, uma chave de assinatura e um certificado de autenticação DEVERão ser fornecidos para garantir que o chamador da API esteja autorizado a alterar a política. O Certificate campo DEVE ser um dos certificados retornados pela GetPolicyManagementCertificates(CancellationToken) API.

Os clientes precisam ser capazes de verificar se o documento de política de atestado não foi modificado antes que o documento de política seja recebido pelo enclave do serviço de atestado. Há duas propriedades fornecidas no [PolicyResult][attestation_policy_result] que podem ser usadas para verificar se o serviço recebeu o documento de política:

Para verificar o hash, os clientes podem gerar um token de atestado e verificar o hash gerado com base nesse token:
// 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()));

Se a chave de assinatura e o certificado não forem fornecidos, a API SetPolicyAsync criará um token de atestado não seguro encapsulando a política de atestado. Para validar o PolicyTokenHash valor retornado, um desenvolvedor pode criar o próprio AttestationToken e criar o hash dele.

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

Aplica-se a