AWS Java IOT получает политику по переменной политики
Я создал политику с помощью AWSIotClient.createPolicy(), и одна переменная, содержащая идентификатор клиента в моей политике, выглядит следующим образом:
{"Effect": "Allow", "Action": ["iot: Connect"], "Resource": "arn: aws: iot: us-east-1: 095750864911: client /ClientId"}
Теперь мой сценарий, как и в другом запросе, я хотел бы найти политики, принадлежащие этому идентификатору клиента и деактивировать, если таковые существуют.
Как я могу сделать это с помощью AWS Java IOT? Есть ли способ найти политику по ее переменным?
1 ответ
Существует несколько способов получения информации о политике IOT Aws и определения, прикреплены ли они к целям (принципалам / сертификатам). Я использую CLI здесь, но все эти вызовы доступны в SDK службы AWS IOT для Java.
Список политик, прикрепленных к сертификату
Я предполагаю, что у вас есть 1 политика на сертификат. Если у вас есть сертификат ARN, вы можете просмотреть политику, прикрепленную к этому сертификату, используя list-attached-policies
вызов.
aws iot list-attached-policies --target arn:aws:iot:eu-central-1:xxxx:cert/xxxx {
"policies": [
{
"policyName": "Policy_Thing1",
"policyArn": "arn:aws:iot:eu-central-1:xxx:policy/Policy_Thing1"
}
] }
Затем вы получаете подробную информацию о политике, используя get-policy
вызов
aws iot get-policy --policy-name "Policy_Thing1"
{
"policyName": "Policy_Thing1",
"policyArn": "arn:aws:iot:eu-central-1:xxx:policy/Policy_Thing",
"policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"iot:Connect\"],\"Resource\":\"arn:aws:iot:eu-central-1:xxxx:client/Thing2\"},{\"Effect\":\"Allow\",\"Action\":[\"iot:Publish\",\"iot:Receive\"],\"Resource\":\"arn:aws:iot:eu-central-1:xxxx:topic/testing123/Thing2/*\"},{\"Effect\":\"Allow\",\"Action\":[\"iot:Subscribe\"],\"Resource\":\"arn:aws:iot:eu-central-1:xxxx:topicfilter/testing123/Thing2/*\"}]}",
"defaultVersionId": "1"
}
Перечислите все политики
Если ваши политики еще не привязаны к сертификату, вы можете перечислить все политики и отфильтровать их в памяти для поиска вашей конкретной политики.
aws iot list-policies
{
"policies": [
{
"policyName": "Policy_thing3",
"policyArn": "arn:aws:iot:eu-central-1:xxxx:policy/Policy_thing1"
},
{
"policyName": "Policy_Thing1",
"policyArn": "arn:aws:iot:eu-central-1:xxxx:policy/Policy_Thing1"
}
]
}
Чтобы узнать, привязана ли политика к цели, выполните list-targets-for-policy
вызов:
aws iot list-targets-for-policy --policy-name "Policy_Thing2"
{
"targets": [
"arn:aws:iot:eu-central-1:xxxx:cert/xxxxx"
]
}