Inleiding
In dit document worden de stappen beschreven voor het configureren van API-toegang en het gebruik ervan om brongegevens op te halen uit de beveiligde toegang.
Voorwaarden
Cisco raadt kennis van de volgende onderwerpen aan:
- Python 3.x
- REST-API
- Cisco Secure Access
Vereisten
Aan deze voorwaarden moet worden voldaan voordat verder kan worden gegaan:
- Cisco Secure Access-gebruikersaccount met de rol Full AdminUser.
- Cisco Security Cloud Single Sign On (SCSO)-account om in te loggen bij Secure Access.
Gebruikte componenten
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
- Dashboard voor beveiligde toegang
- Python
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Configureren
De Secure Access API biedt een standaard REST-interface en ondersteunt de OAuth 2.0 Client Credentials Flow. Meld u aan bij Secure Access en maak uw Secure Access API-sleutels. Gebruik vervolgens uw API-referenties om een API-toegangstoken te genereren.
Opmerking: API-sleutels, wachtwoorden, geheimen en tokens bieden toegang tot uw persoonlijke gegevens. U mag uw inloggegevens nooit delen met een andere gebruiker of organisatie.
Configureer de API-sleutel vanuit het Secure Access Dashboard voordat u de scripts uitvoert die in dit artikel worden genoemd.
Een API-sleutel maken
Maak een API-sleutel en een geheim met deze stappen. Meld u aan bij Veilige toegang met de URL: Veilige toegang
- Selecteer in de linkerzijbalk de optie
Admin
.
- Selecteer onder
Admin
de optie API Keys:
Secure Access Dashboard Admin - API-sleutels
3. Klik in de rechterbovenhoek op de +
knop om een nieuwe API-sleutel toe te voegen:
Veilige toegang - API-sleutel toevoegen
4. Verstrek de API Key Name, Description
(Facultatief), en selecteer deKey scope
enExpiry date
volgens uw vereiste. Als u klaar bent, klikt u op de Create
knop:
Veilige toegang - API-sleuteldetails
5. Kopieer de tekstAPI Key
en de Key Secret
tekst en klik vervolgens opACCEPT AND CLOSE
:
Veilige toegang - API-sleutel en geheim
Opmerking: er is maar één mogelijkheid om uw API-geheim te kopiëren. Secure Access slaat uw API-geheim niet op en u kunt het niet ophalen na de eerste creatie.
Python-code
Er zijn meerdere manieren om deze code te schrijven, aangezien het gegenereerde token 3600 seconden (1 uur) geldig is. U kunt twee afzonderlijke scripts maken waarin het eerste script kan worden gebruikt om het token aan toonder te genereren en vervolgens een tweede script waarin dat token aan toonder kan worden gebruikt om de API-oproep te doen (ophalen/bijwerken of verwijderen) naar de bron waarin u geïnteresseerd bent, of een enkel script schrijven om beide acties uit te voeren, terwijl u ervoor zorgt dat als een token aan toonder al is gegenereerd, er een voorwaarde in de code wordt bewaard dat er geen nieuwe token aan toonder wordt gegenereerd elke keer dat het script wordt uitgevoerd.
Om het in python te laten werken, moet u deze bibliotheken installeren:
pip install oauthlib
pip install requests_oauthlib
Script 1:
Zorg ervoor dat u de juisteclient_id
enclient_secret
in dit script vermelden:
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()))
Uitgang:
De output van dit script moet er ongeveer als volgt uitzien:
Token: {'token_type': 'bearer', 'access_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...', 'expires_in': 3600, 'expires_at': 1707767804.6489065}
Hetaccess_token
is erg lang met duizenden tekens en daarom is het, om de uitvoer leesbaar te houden, alleen voor dit voorbeeld ingekort.
Script 2:
Hetaccess_token
script van Script 1 kan vervolgens in dit script worden gebruikt om API-aanroepen te doen. Gebruik bijvoorbeeld Script 2 om de informatie over de netwerktunnelgroepen op te halen met behulp van de bron/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)
Uitgang:
De output van dit script moet er ongeveer als volgt uitzien:
Python-uitvoer - Netwerktunnelgroepen
U kunt ook informatie opvragen over beleidsregels, zwervende computers, rapporten, enzovoort, met de gebruikershandleiding voor ontwikkelaars voor beveiligde toegang.
Problemen oplossen
De Secure Access API-eindpunten gebruiken HTTP-antwoordcodes om het succes of falen van een API-verzoek aan te geven. Over het algemeen geven codes in het 2xx-bereik succes aan, codes in het 4xx-bereik geven een fout aan die het gevolg is van de verstrekte informatie en codes in het 5xx-bereik geven serverfouten aan. De aanpak om het probleem op te lossen is afhankelijk van de responscode die wordt ontvangen:
REST API - Responscodes 1
REST API - Responscodes 2
Gerelateerde informatie