gpt4 book ai didi

node.js - 虚拟机防火墙规则更新

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:55 25 4
gpt4 key购买 nike

是否有一个 API 可以使用 NodeJS 更新防火墙规则,如果有一个示例,我们将不胜感激。

要求:我有一个大约 1700 个 CDN 可信 IP 列表,允许在端口 80 上访问 GCP 中的特定虚拟机。

据我了解,每个防火墙规则最多可以有 256 个源 ip。我可以创建和更新其中 8 个,并使用相同的名称进行标记,

问题:我们可以使用 NodeJS API 来实现吗?

This API 不返回防火墙规则。

相当于 cli 命令如下

gcloud compute firewall-rules describe alltraffic
gcloud compute firewall-rules update alltraffic --source-ranges="14.201.176.140/32","14.201.176.144/32"
gcloud compute firewall-rules create ramtest1 --allow="tcp:80" --description="ramtest1" --source-ranges="205.251.192.0/19","52.95.174.0/24" --target-tags="tcp-111"

https://cloud.google.com/sdk/gcloud/reference/compute/firewall-rules/

在nodejs api中没有看到更新命令 https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Firewall#create https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Compute#createFirewall

exports.run_process = async (req, res) => {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const network = compute.network('default');
const firewalls = (await network.getFirewalls())[0];
for(const firewall of firewalls) {
// console.log('firewall == '+JSON.stringify(firewall));
console.log('firewall = '+firewall.metadata.name);
if(firewall.metadata.name === 'alltraffic') {
console.log(' xxxxxxxxxxxxxxxxxxxx changing all traffic xxxxxxxxxxxxxx ');
}
}
return res.status(200).send('ok');
};

上面这段代码列出了防火墙规则,NFI为什么叫防火墙,在控制台里叫防火墙规则,太困惑了

最佳答案

您应该使用setMetadata函数来更新防火墙规则。例如,采用以下 Nodejs 代码片段,它读取并更新防火墙规则的描述:

async function doit() {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const f = compute.firewall('default-allow-10000');

f.get().then(data => {
const firewall = data[0];
console.log('initial description: ' + firewall.metadata.description);
const metadata = {
description: 'new description for this rule'
};
return firewall.setMetadata(metadata);
}).then(data => {
const firewall = data[0];
console.log('description set');
return compute.firewall('default-allow-10000').get();
}).then(data => {
const firewall = data[0];
console.log('current description: ' + firewall.metadata.description);
});
}

doit();

在我的示例中,输出为:

initial description: old descriptiondescription setcurrent description: new description for this rule

要查看元数据对象上存在的内容,您应该查看 the definition of the Firewall resource在 REST API 中。

关于node.js - 虚拟机防火墙规则更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53919616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com