Introdução
Este documento descreve as etapas para configurar o acesso à API e usá-lo para buscar informações de recursos no Secure Access.
Pré-requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- Python 3. x
- API REST
- Acesso seguro da Cisco
Requisitos
Estes requisitos devem ser cumpridos antes de prosseguir:
- Conta de usuário do Cisco Secure Access com a função de Administrador Completo.
- Conta do Cisco Security Cloud Single Sign On (SCSO) para entrar no Secure Access.
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- Painel de acesso seguro
- Python
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Configurar
A API de Acesso Seguro fornece uma interface REST padrão e suporta o Fluxo de Credenciais de Cliente OAuth 2.0. Para começar, entre no Secure Access e crie suas chaves de API do Secure Access. Em seguida, use suas credenciais de API para gerar um token de acesso à API.
Observação: chaves de API, senhas, segredos e tokens permitem acesso aos seus dados privados. Você nunca deve compartilhar suas credenciais com outro usuário ou outra organização.
Configure a chave de API no Secure Access Dashboard antes de executar os scripts mencionados neste artigo.
Criar uma chave de API
Crie uma chave de API e um segredo com essas etapas. Entre no Secure Access com o URL: Secure Access
- Na barra lateral esquerda, selecione a opção
Admin.
- Em
Admin, selecione a opção API Keys:
Administrador do painel de controle de acesso seguro - Chaves de API
3. No canto superior direito, clique no + botão Adicionar uma nova chave de API:
Acesso seguro - Adicionar chave de API
4. Forneça o API Key Name, Description(Opcional) e selecione o Key scope e Expiry date conforme sua necessidade. Ao terminar, clique no botão Create:
Acesso seguro - Detalhes da chave de API
5. Copie o API Keye o Key Secret e clique em ACCEPT AND CLOSE:
Acesso seguro - chave e segredo de API
Observação: há apenas uma oportunidade para copiar o segredo da API. O Secure Access não salva o segredo da API e você não pode recuperá-lo após sua criação inicial.
Código Python
Há várias maneiras de gravar esse código considerando que o token gerado é válido por 3600 segundos (1 hora). Você pode criar 2 scripts separados nos quais o primeiro script pode ser usado para gerar o Token de Portador e, em seguida, um segundo script no qual o Token de Portador pode ser usado para fazer a chamada de API (busca/atualização ou exclusão) para o recurso no qual você está interessado, ou escrever um único script para realizar ambas as ações, garantindo que, se um token de portador já tiver sido gerado, uma condição será mantida no código de que um novo token de portador não será gerado toda vez que o script for executado.
Para fazê-lo funcionar em Python, certifique-se de instalar estas bibliotecas:
pip install oauthlib pip install requests_oauthlib
Script 1:
Certifique-se de mencionar o client_ide correto client_secretneste script:
import requests from oauthlib.oauth2 import BackendApplicationClient from oauthlib.oauth2 import TokenExpiredError from requests_oauthlib import OAuth2Session from requests.auth import HTTPBasicAuth token_url = 'https://api.sse.cisco.com/auth/v2/token' client_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" client_secret = "XXXXXXXXXXXXXXXXXXXXXXXXX" class SecureAccessAPI: def __init__(self, url, ident, secret): self.url = url self.ident = ident self.secret = secret self.token = None def GetToken(self): auth = HTTPBasicAuth(self.ident, self.secret) client = BackendApplicationClient(client_id=self.ident) oauth = OAuth2Session(client=client) self.token = oauth.fetch_token(token_url=self.url, auth=auth) return self.token # Get token api = SecureAccessAPI(token_url, client_id, client_secret) print("Token: " + str(api.GetToken()))
Saída:
A saída deste script deve ser semelhante a:
Token: {'token_type': 'bearer', 'access_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...', 'expires_in': 3600, 'expires_at': 1707767804.6489065}
O access_tokené muito longo com milhares de caracteres e, portanto, para manter a saída legível, ele foi encurtado apenas para este exemplo.
Script 2:
O access_token do Script 1 pode ser usado nesse script para fazer chamadas à API. Como exemplo, use o Script 2 para buscar as informações sobre os grupos de túneis de rede usando o recurso /deployments/v2/networktunnelgroups:
import requests import pprint import json url = "https://api.sse.cisco.com/deployments/v2/networktunnelgroups" BT = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...'" headers = { 'Authorization':f"Bearer {BT}" ,"Accept": "application/json" } response = requests.request('GET', url, headers=headers) json_object = json.loads(response.content) pprint.pprint(json_object)
Saída:
A saída deste script deve ser semelhante a:
Saída em Python - Grupos de túnel de rede
Você também pode buscar informações sobre Diretivas, Computadores em Roaming, Relatórios etc. com o Guia do Usuário de Desenvolvedores do Secure Access.
Troubleshooting
Os pontos de extremidade da API Secure Access usam códigos de resposta HTTP para indicar o sucesso ou a falha de uma solicitação da API. Em geral, os códigos no intervalo 2xx indicam êxito, os códigos no intervalo 4xx indicam um erro resultante das informações fornecidas e os códigos no intervalo 5xx indicam erros de servidor. A abordagem para resolver o problema dependeria do código de resposta recebido:
API REST - Códigos de resposta 1
API REST - Códigos de resposta 2
Informações Relacionadas