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"
    ]
}
Другие вопросы по тегам