я выполнил команду, чтобы получить события поиска для действий ConsoleLogin в учетной записи AWS. Я хочу извлечь ключевые значения для mfaAuthenticated , eventSource и eventType из этого заданного вывода json
Вывод, который я получил от приведенной выше команды
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "XXXXXXXXXXXXXXXXX:dkboss",
"arn": "XXXXXXXXXXXXXXXXXXXXXXXXX/dkboss",
"accountId": "XXXXXXXXXXXXXXXX",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"arn": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"accountId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"userName": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2022-11-27T15:24:28Z",
"mfaAuthenticated": "false" ---------> i want this key value
}
}
},
"eventTime": "2022-11-27T15:24:29Z",
"eventSource": "signin.amazonaws.com", ---------> i want this key value
"eventName": "ConsoleLogin",
"awsRegion": "us-east-1",
"sourceIPAddress": "1.1.1.1",
"userAgent": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"requestParameters": null,
"responseElements": {
"ConsoleLogin": "Success"
},
"additionalEventData": {
"MobileVersion": "No",
"MFAUsed": "No"
},
"eventID": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"readOnly": false,
"eventType": "AwsConsoleSignIn", ---------> i want this key value
"managementEvent": true,
"recipientAccountId": "XXXXXXXXXXXXXXXXXXXXXXX",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.2",
"cipherSuite": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"clientProvidedHostHeader": "signin.aws.amazon.com"
}
}
Я выполнил эту команду, чтобы получить приведенный выше вывод json:
aws cloudtrail --region us-east-1 lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin --start-time $(date -d "-60 минут" +%s) --query 'Events[ ].CloudTrailEvent.attributes' --output text | jq
Вы не указали никаких условий, как выбирать узлы или как форматировать вывод. Итак, как насчет того, чтобы просто перейти к их местонахождению. С опцией --raw-output
(или -r
) jq будет выводить их декодированные значения. Сделав его потоком в фильтре (разделив их запятыми ,
), вы сделаете его списком, разделенным новой строкой.
jq --raw-output '
.userIdentity.sessionContext.attributes.mfaAuthenticated,
.eventSource,
.eventType
'
false
signin.amazonaws.com
AwsConsoleSignIn
Если вы предоставите в своем вопросе ожидаемый образец вывода на основе предоставленного вами образца ввода, я могу адаптировать к нему свой ответ.
спасибо @pmf. Есть ли способ получить весь вывод json, отфильтровав заданные значения ключа? Вот команда для этого, я попробовал это, чтобы получить события cloudtrail, выполнив запрос для входа в систему аутентификации mfa. Команда: aws cloudtrail --region us-east-1 lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin --start-time $(date -d "-90 минут" +%s) --query «Events[].CloudTrailEvent.userIdentity.sessionContext.attributes.mfaA прошел проверку подлинности» Это не сработало