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 para Adicionar uma nova Chave de API:
Acesso seguro - Adicionar chave de API
4. Forneça o API Key Name, Description
(Opcional) e selecione oKey scope
eExpiry date
conforme sua necessidade. Ao terminar, clique no botão Create
:
Acesso seguro - Detalhes da chave de API
5. Copie oAPI Key
e o Key Secret
e clique emACCEPT 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 oclient_id
e corretoclient_secret
neste 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}
Oaccess_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:
Oaccess_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