Productor OSIRIS JSON per a Amazon Web Services
El productor OSIRIS JSON AWS es connecta a Amazon Web Services mitjançant l’AWS SDK per a Go v2 i genera documents d’instantània OSIRIS JSON de la topologia del compte: VPC, subxarxes, grups de seguretat, Transit Gateways, Direct Connect, equilibradors de càrrega, instàncies EC2 i altres recursos.
Requisits previs
- Installeu el productor OSIRIS JSON. Consulteu la pàgina Installació per obtenir més opcions d’installació.
- Configureu les credencials AWS mitjançant un dels mètodes següents:
aws configure --profile <name>per a credencials estàtiquesaws configure ssoper a IAM Identity Center (SSO)osirisjson-producer aws setup-sso --start-url <URL>per a la configuració SSO automatitzada- Variables d’entorn (
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - Perfil d’instància IAM quan s’executa a EC2
- L’usuari autenticat ha de tenir accés de només lectura a un o més comptes de destinació. Podeu executar el productor al vostre equip local o invocar-lo mitjançant una tasca programada amb un compte de servei.
Ús de la CLI
osirisjson-producer aws [flags]
osirisjson-producer aws setup-sso --start-url <URL> [--region <region>]
osirisjson-producer aws template --generate
La configuració SSO automatitza la creació de perfils
Per a les organitzacions que utilitzen AWS IAM Identity Center, anteriorment AWS SSO, amb molts comptes, la subordre setup-sso automatitza la creació de perfils:
osirisjson-producer aws setup-sso --start-url https://myorg.awsapps.com/start
L’ordre duu a terme les accions següents:
- Detecta automàticament la regió SSO o utilitza
--regionper especificar-la. - Obre un navegador per autoritzar el dispositiu.
- Descobreix tots els comptes i rols.
- Escriu els perfils a
~/.aws/configamb el format<AccountName>_<RoleName>. - Desa el testimoni SSO a la memòria cau per utilitzar-lo immediatament, sense requerir una execució separada de
aws sso login.
Aquesta funció és especialment útil en entorns empresarials amb centenars de comptes AWS, on la configuració manual dels perfils és poc pràctica.
Mode interactiu
Executeu l’ordre sense indicadors per obtenir un selector de perfils interactiu:
osirisjson-producer aws
El productor descobreix tots els perfils de l’AWS CLI de ~/.aws/config i ~/.aws/credentials i presenta una llista numerada. Seleccioneu números individuals (1,3,5), intervals (30-55), combinacions (1,3,30-55) o escriviu all. A continuació, seleccioneu les 17 regions predeterminades o indiqueu regions específiques.
Mode de compte i regió únics
Recull un compte i una regió i desa el resultat com a amazon-aws-<timestamp>-<name>-<region>.json:
osirisjson-producer aws --profile prod --region us-east-1
Mode multiregió
Recull totes les regions d’un compte i crea una carpeta amb un fitxer per regió:
# All 17 default regions
osirisjson-producer aws --profile prod --all-regions
# Specific regions
osirisjson-producer aws --profile prod --region us-east-1,eu-west-1
Mode per lots (CSV)
Generar una plantilla CSV:
osirisjson-producer aws template --generate
Recollir dades a partir d’un fitxer CSV:
osirisjson-producer aws -s accounts.csv -o ./output
La plantilla CSV utilitza les columnes següents:
| Columna | Obligatòria | Descripció |
|---|---|---|
profile | sí | Nom del perfil de l’AWS CLI |
account_id | Número de compte AWS de 12 dígits, resolt mitjançant STS si el valor és buit | |
account_name | Etiqueta llegible utilitzada com a nom de la carpeta de sortida | |
regions | Llista de regions separades per comes. Un valor buit selecciona totes les regions predeterminades. | |
environment | Etapa de desplegament: dv, np, pr | |
notes | Notes de text lliure, ignorades pel productor |
Jerarquia de sortida
Regió única: desa amazon-aws-<timestamp>-<name>-<region>.json al directori actual.
Diverses regions per a un sol compte: crea una carpeta al directori actual:
amazon-aws-<timestamp>-<name>/
us-east-1.json
eu-west-1.json
...
Mode per lots amb directori de sortida:
output/
<AccountName>/
<timestamp>/
us-east-1.json
eu-west-1.json
...
Cada regió genera un document OSIRIS JSON autònom. Els recursos globals, com ara les zones allotjades de Route53 i els Global Accelerators, s’integren al document us-east-1.
Referència d’indicadors
| Indicador | Forma curta | Descripció |
|---|---|---|
--profile | -P | Nom del perfil de l’AWS CLI |
--region | -R | Regions AWS separades per comes |
--all-regions | Recorre les 17 regions AWS predeterminades | |
--source | -s | Fitxer CSV amb els comptes de destinació |
--output | -o | Directori de sortida |
--safe-failure-mode | Tractament de secrets: fail-closed (predeterminat), log-and-redact, off | |
--help / -h | Mostra l’ajuda i surt del programa |
Dades recollides
Per defecte, el productor AWS recull totes les dades disponibles d’acord amb l’Especificació OSIRIS JSON. No hi ha cap opció per canviar el nivell de detall. Els tipus de recursos següents es consulten mitjançant l’AWS SDK v2:
Tipus OSIRIS estàndard:
| Recurs AWS | Tipus OSIRIS | API AWS |
|---|---|---|
| VPC | network.vpc | ec2:DescribeVpcs |
| Subxarxa | network.subnet | ec2:DescribeSubnets |
| Grup de seguretat | network.security.group | ec2:DescribeSecurityGroups |
| Interfície de xarxa (ENI) | network.interface | ec2:DescribeNetworkInterfaces |
| Equilibrador de càrrega (ALB/NLB/GWLB) | network.loadbalancer | elbv2:DescribeLoadBalancers |
| Equilibrador de càrrega clàssic | network.loadbalancer | elb:DescribeLoadBalancers |
| Tallafoc de xarxa | network.firewall | networkfirewall:ListFirewalls |
| Instància EC2 | compute.vm | ec2:DescribeInstances |
Tipus personalitzats (espai de noms osiris.aws.*):
| Recurs AWS | Tipus OSIRIS | API AWS |
|---|---|---|
| Taula d’encaminament | osiris.aws.routetable | ec2:DescribeRouteTables |
| Internet Gateway | osiris.aws.gateway.internet | ec2:DescribeInternetGateways |
| NAT Gateway | osiris.aws.gateway.nat | ec2:DescribeNatGateways |
| VPN Gateway | osiris.aws.gateway.vpn | ec2:DescribeVpnGateways |
| Customer Gateway | osiris.aws.gateway.customer | ec2:DescribeCustomerGateways |
| Internet Gateway només de sortida | osiris.aws.gateway.egressonly | ec2:DescribeEgressOnlyInternetGateways |
| Adreça IP elàstica | osiris.aws.elasticip | ec2:DescribeAddresses |
| Punt de connexió VPC | osiris.aws.vpc.endpoint | ec2:DescribeVpcEndpoints |
| Connexió d’emparellament VPC | osiris.aws.vpc.peering | ec2:DescribeVpcPeeringConnections |
| Transit Gateway | osiris.aws.transitgateway | ec2:DescribeTransitGateways |
| Connexió TGW | osiris.aws.transitgateway.attachment | ec2:DescribeTransitGatewayAttachments |
| Taula d’encaminament TGW | osiris.aws.transitgateway.routetable | ec2:DescribeTransitGatewayRouteTables |
| Connexió d’emparellament TGW | osiris.aws.transitgateway.peering | ec2:DescribeTransitGatewayPeeringAttachments |
| ACL de xarxa | osiris.aws.nacl | ec2:DescribeNetworkAcls |
| Connexió Direct Connect | osiris.aws.directconnect | directconnect:DescribeConnections |
| Direct Connect Gateway | osiris.aws.directconnect.gateway | directconnect:DescribeDirectConnectGateways |
| Interfície virtual Direct Connect | osiris.aws.directconnect.vif | directconnect:DescribeVirtualInterfaces |
| Connexió VPN | osiris.aws.vpn.connection | ec2:DescribeVpnConnections |
| Opcions DHCP | osiris.aws.dhcpoptions | ec2:DescribeDhcpOptions |
| Llista de prefixos gestionada | osiris.aws.prefixlist | ec2:DescribeManagedPrefixLists |
| Flow Log | osiris.aws.flowlog | ec2:DescribeFlowLogs |
| Zona de disponibilitat | osiris.aws.availabilityzone | ec2:DescribeAvailabilityZones |
| Grup de destinació | osiris.aws.targetgroup | elbv2:DescribeTargetGroups |
| Regla del Resolver | osiris.aws.resolver.rule | route53resolver:ListResolverRules |
| Punt de connexió del Resolver | osiris.aws.resolver.endpoint | route53resolver:ListResolverEndpoints |
| Zona allotjada de Route53 | osiris.aws.route53.zone | route53:ListHostedZones (global) |
| Global Accelerator | osiris.aws.globalaccelerator | globalaccelerator:ListAccelerators (global) |
Estructura de la sortida OSIRIS JSON per a AWS
{
"$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
"version": "1.0.0",
"metadata": {
"generator": {
"name": "osirisjson-producer-aws",
"version": "0.1.0"
},
"scope": {
"providers": ["aws"],
"accounts": ["123456789012"],
"regions": ["us-east-1", "global"]
}
},
"topology": {
"resources": [ ... ],
"connections": [ ... ],
"groups": [ ... ]
}
}
Tipus de recursos
Els tipus de recursos segueixen l’Especificació OSIRIS JSON v1.0. Quan estan definits, s’utilitzen els tipus estàndard. Els tipus específics d’AWS utilitzen l’espai de noms osiris.aws.*.
Tipus estàndard:
network.vpc: núvols privats virtualsnetwork.subnet: subxarxesnetwork.interface: interfícies de xarxa elàstiquesnetwork.security.group: grups de seguretatnetwork.loadbalancer: equilibradors de càrrega (ALB, NLB, GWLB, Classic)network.firewall: tallafocs de xarxacompute.vm: instàncies EC2
Tipus personalitzats (osiris.aws.*):
osiris.aws.routetable: taules d’encaminament amb entrades de rutaosiris.aws.gateway.internet: Internet Gatewaysosiris.aws.gateway.nat: NAT Gatewaysosiris.aws.gateway.vpn: VPN Gatewaysosiris.aws.gateway.customer: Customer Gatewaysosiris.aws.gateway.egressonly: Internet Gateways només de sortidaosiris.aws.elasticip: adreces IP elàstiquesosiris.aws.vpc.endpoint: punts de connexió VPC de tipus gateway i interfícieosiris.aws.vpc.peering: connexions d’emparellament VPCosiris.aws.transitgateway: Transit Gatewaysosiris.aws.transitgateway.attachment: connexions TGWosiris.aws.transitgateway.routetable: taules d’encaminament TGWosiris.aws.transitgateway.peering: connexions d’emparellament TGWosiris.aws.nacl: ACL de xarxaosiris.aws.directconnect: connexions Direct Connectosiris.aws.directconnect.gateway: Direct Connect Gatewaysosiris.aws.directconnect.vif: interfícies virtuals Direct Connectosiris.aws.vpn.connection: connexions VPNosiris.aws.dhcpoptions: conjunts d’opcions DHCPosiris.aws.prefixlist: llistes de prefixos gestionadesosiris.aws.flowlog: registres de flux VPCosiris.aws.availabilityzone: zones de disponibilitatosiris.aws.targetgroup: grups de destinacióosiris.aws.resolver.rule: regles de Route53 Resolverosiris.aws.resolver.endpoint: punts de connexió de Route53 Resolverosiris.aws.route53.zone: zones allotjades de Route53osiris.aws.globalaccelerator: Global Accelerators
Tipus de connexions
contains: relació de contenció, per exemple una subxarxa dins d’un VPCnetwork: connectivitat de xarxa, inclosos ENI a subxarxa, grup de seguretat a ENI, ACL de xarxa a subxarxa, associacions de taules d’encaminament, enllaços de NAT Gateway, connexions IGW/VGW, emparellaments VPC, connexions TGW, interfície virtual Direct Connect a gateway, connexions VPN, DHCP a VPC i equilibrador de càrrega a grup de destinació
Tipus de grups
osiris.aws.account: grup de compte de nivell superior amb grups VPC com a elements fillsnetwork.vpc: grups VPC que contenen els recursos del VPC com a membres
Metadades del proveïdor
Cada recurs inclou provider.type amb el tipus de recurs natiu d’AWS, per exemple ec2:vpc, ec2:instance o elbv2:loadbalancer. Els recursos també inclouen provider.region i provider.account.
ID dels recursos
Els ID dels recursos AWS segueixen el patró aws::arn:aws:<service>:<region>:<account>:<resource> per construir ARN canònics. Per als recursos que ja disposen d’un ARN, com ara els equilibradors de càrrega, s’utilitza l’ARN existent amb el prefix aws::.
Exemples
Regió única
Recollir un únic compte AWS i una regió:
osirisjson-producer aws --profile prod --region us-east-1
Exemple de document de sortida OSIRIS JSON:
{
"$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
"version": "1.0.0",
"metadata": {
"generator": {
"name": "osirisjson-producer-aws",
"version": "0.1.0"
},
"scope": {
"providers": ["aws"],
"accounts": ["123456789012"],
"regions": ["us-east-1", "global"]
}
},
"topology": {
"resources": [
{
"id": "aws::arn:aws:ec2:us-east-1:123456789012:vpc/vpc-045dbb8300ce8bfd3",
"type": "network.vpc",
"name": "production-vpc",
"status": "active",
"provider": {
"name": "aws",
"native_id": "vpc-045dbb8300ce8bfd3",
"type": "ec2:vpc",
"region": "us-east-1",
"account": "123456789012"
},
"properties": {
"cidr_block": "10.0.0.0/16",
"is_default": false,
"owner_id": "123456789012"
}
},
{
"id": "aws::arn:aws:ec2:us-east-1:123456789012:instance/i-0abc123def456",
"type": "compute.vm",
"name": "web-server-01",
"status": "active",
"provider": {
"name": "aws",
"native_id": "i-0abc123def456",
"type": "ec2:instance",
"region": "us-east-1",
"account": "123456789012"
},
"properties": {
"instance_type": "c5.xlarge",
"private_ip": "10.0.1.24",
"public_ip": "203.0.113.10",
"vpc_id": "vpc-123456789012",
"subnet_id": "subnet-123456789012"
}
}
],
"connections": [
{
"source": "aws::arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0ed57794b6f7812a5",
"target": "aws::arn:aws:ec2:us-east-1:123456789012:vpc/vpc-045dbb8300ce8bfd3",
"type": "contains",
"direction": "forward"
}
],
"groups": [
{
"id": "aws::account::123456789012",
"type": "osiris.aws.account",
"name": "Account 123456789012",
"children": [
"aws::vpc-group::us-east-1::vpc-123456789012"
]
},
{
"id": "aws::vpc-group::us-east-1::vpc-123456789012",
"type": "network.vpc",
"name": "VPC production-vpc",
"members": [
"aws::arn:aws:ec2:us-east-1:123456789012:vpc/vpc-123456789012",
"aws::arn:aws:ec2:us-east-1:123456789012:subnet/subnet-123456789012"
]
}
]
}
}