要解决AWS IoT策略仍然允许其他主题通过MQTT访问的问题,您可以使用以下代码示例来限制访问权限:
// 导入所需的AWS SDK库
const AWS = require('aws-sdk');
const iot = new AWS.Iot();
// 定义AWS IoT策略名称和要限制的主题
const policyName = 'your-policy-name';
const topic = 'your-topic';
// 获取现有的AWS IoT策略文档
iot.getPolicy({ policyName }, (err, data) => {
if (err) console.log(err, err.stack);
else {
const policyDocument = JSON.parse(data.policyDocument);
// 添加限制访问的条件到AWS IoT策略文档
policyDocument.Statement.forEach((statement) => {
if (statement.Effect === 'Allow') {
statement.Condition = {
"ForAllValues:StringNotEquals": {
"iot:TopicFilter": topic
}
};
}
});
// 更新AWS IoT策略文档
iot.createPolicyVersion({
policyName,
policyDocument: JSON.stringify(policyDocument),
setAsDefault: true,
}, (err, data) => {
if (err) console.log(err, err.stack);
else console.log('AWS IoT策略已更新');
});
}
});
请确保将your-policy-name
替换为您的实际AWS IoT策略名称,将your-topic
替换为您要限制访问的实际主题。此代码示例将在现有的AWS IoT策略文档中添加一个条件,以仅允许访问指定的主题。更新后的策略文档将设置为默认版本。
上一篇:AWS IoT策略没有限制访问
下一篇:AWS IOT策略文件