你可以使用如下方法连接FortiGate和AWS Kubernetes (EKS) :
- Kubernetes external connector
- AWS external connector
使用Kubernetes external connector (如下图),你需要提供一个“secret token”。然而,在Kubernetes 1.24版本[2]之后,token不会自动创建,并且大多数设置将令牌的最大生存期设置为48小时。所以,除非你没有这个限制,否则它可能不是一个可行的解决方案。
Kubernetes external connector
另一种方法是,使用相同的AWS connector读取相关对象以及EKS对象。
AWS connector in FortiGate using metadata IAM
配置FortiGate
- 在FortiGate GUI中, 在 “Security Fabric” > "External Connectors"
- 点击“Create New” 并选择 Amazon Web Services (AWS)
- 给它一个您选择的名称,保留所有选项为默认值(您应该有一个类似于上图的配置),然后单击OK
配置 AWS IAM Role
- 现在,你需要给FortiGate VM添加一个EKS访问权限的IAM Role
- 到 AWS Console
- 检查当前添加给FortiGate的IAM role
- 到 EC2 > Instances 选择FortiGate VM
- 在 Details 面板, 你可以看到当前被使用的 IAM Role
- 注意: 你可以选择继续使用现在这个IAM role或者创建一个新的role。如果你要创建新role,记得复制一下当前FortiGate VM(EC2)的权限
- 在 AWS Console 进到 IAM. 点击 “Roles” 菜单
- 查找并选择你为FortiGate要分配的role
- 在Permissions policies 点击 Add permissions > Create inline policy
7. 在Policy editor 选择JSON. 从[1]中粘贴下面的内容到策略中。你应该有类似于下图的显示:
8. 点击Next
9. 给它一个您选择的Policy名称,然后单击Create Policy
10. 复制 IAM role ARN
在EKS中创建一个 ClusterRole 并分配一个组权限
- 详情请参阅 [3] 和 [4]
- 您需要使用kubectl访问EKS集群(在继续之前需要配置它)
- 创建集群角色,请参见 [4]。保存为一个 YAML 文件
- 在这个例子中,文件名是fgt-clusterrole。所以要应用它,你应该执行: kubectl apply -f fgt-clusterrole.yaml
- Cluster角色创建好了,现在需要绑定它。运行下面的命令: kubectl create clusterrolebinding fgt-connector --clusterrole=fgt-connector --group=fgt-connector
- 最后一步是在ConfigMap上修改它。运行下面的命令: kubectl edit -n kube-system configmap/aws-auth 编辑文件,添加如下红色矩形所示的信息并保存
- 完成!现在你的FortiGate可以读取EKS集群信息了
[1] AWS EKS SDN connector | FortiGate Public Cloud 7.4.0 | Fortinet Document Library
[2] https://github.com/kubernetes/enhancements/tree/master/keps/sig-auth/2799-reduction-of-secret-based-service-account-token
[3] Enabling IAM principal access to your cluster - Amazon EKS
[4] Obtaining the IP address, port, and secret token in Kubernetes | FortiGate Private Cloud 7.2.0 | Fortinet Document Library