AttestationAdministrationClient.SetPolicyAsync Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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:
- PolicySigner – se a SetPolicy(AttestationType, String, AttestationTokenSigningKey, CancellationToken) chamada incluir um certificado de autenticação, esse será o certificado fornecido no momento da chamada 'SetPolicy'. Se nenhum signatário de política tiver sido definido, isso será nulo.
- PolicyTokenHash – esse é o hash do [Token Web JSON][json_web_token] enviado ao serviço
// 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
Azure SDK for .NET