或许可以使用 Terraformer 对 Okta 进行备份
Okta注册信息的备份
我个人认为,Okta在默认情况下没有备份和导出功能。虽然在Okta的帮助中心中有一些相关问题,但目前还没有得到解决。用户数据备份的可能性将来也很大可能不会被开发。
支持部门告诉我要使用API来创建,但是可能需要花费相当长的时间。在这种情况下,我了解到Terraform支持Okta。如果一开始就使用Terraform进行部署,它可以作为备份使用。现在要引入Terraform的组织,我推荐使用。但是,已经引入并且已经在一定程度上使用Terraform的组织来说,进行反向转换可能相当困难。
进一步调查发现,Terraformer也支持Okta,我想这可能可以用作备份。如果有余力,还可以将其纳入Terraform的管理范围。
实施
环境
-
- Ubuntu 22.0 (WSL)
-
- Terraform 0.13.0
-
- oktaプロバイダー 3.45.0
-
- Terraformer 0.8.24
-
- docker Engine 23.0.1
- dockerイメージ hashicorp/terraform 0.13.0
terraformer只支持terraform 0.13。因此,它比目前(2023/11)的最新版terraform要旧很多。目前的最新版本如下。Okta提供者可以在最新版本上运行,但会出现错误,因此我们将版本降低以避免错误。
-
- terraform v1.6.4
- oktaプロバイダー 4.6.1
另外,由于HashiCorp发布了Terraform的Docker镜像,所以我们将使用它。
文件结构
├── docker
│ ├── Dockerfile
│ ├── init.sh
│ └── provider.tf
├── docker-compose.yml
└── outputs
来源
使用HashiCorp公司的Terraform Docker镜像。按照官方文档的说明安装Terraformer。为了安装Okta提供者,复制provider.tf文件,并执行terraform init命令。
FROM hashicorp/terraform:0.13.0
USER root
RUN apk update --no-cache && \
apk add curl
ARG PROVIDER
RUN curl -LO "https://github.com/GoogleCloudPlatform/terraformer/releases/download/$(curl -s https://api.github.com/repos/GoogleCloudPlatform/terraformer/releases/latest | grep tag_name | cut -d '"' -f 4)/terraformer-${PROVIDER}-linux-amd64"
RUN chmod +x terraformer-${PROVIDER}-linux-amd64
RUN mv terraformer-${PROVIDER}-linux-amd64 /usr/local/bin/terraformer
WORKDIR /opt/terraformer
COPY ./init.sh .
RUN chmod +x ./init.sh
COPY ./provider.tf .
RUN terraform init
ENTRYPOINT [ "/bin/sh", "/opt/terraformer/init.sh" ]
这是用于安装Okta供应商的HCL。没有特别变化的内容。
terraform {
required_providers {
okta = {
source = "okta/okta"
version = "3.45.0"
}
}
}
这是一个执行导入操作的Shell脚本。它没有特别奇特的内容。
#!/bin/sh
cd /opt/terraformer
/usr/local/bin/terraformer import okta --path-output /tmp/outputs/ $1
请在命令中描述要输出的资源。如果要输出多个资源,请用逗号分隔,如果要输出所有资源,请使用星号指定。Terraformer的输出文件将被输出到/tmp/outputs,因此请在volumes中指定要输出到本地路径。
version: "3"
services:
terraformer:
build:
context: ./docker
dockerfile: Dockerfile
args:
PROVIDER: "okta"
container_name: "okta-backup"
# ["--resources=okta_user"]
# ["--resources=okta_user,okta_app_saml"]
command: ["--resources=*"]
environment:
# 公式ドキュメントを参照(https://github.com/GoogleCloudPlatform/terraformer/blob/master/docs/okta.md)
OKTA_ORG_NAME: dev-99999999
OKTA_BASE_URL: okta.com
OKTA_API_TOKEN: 00di2-Me2hrqAuoNkpA7tyzoUKH5E7LDSAzaqPPCKg
volumes:
- ./outputs:/tmp/outputs
执行
在项目的根路径下执行。
$ docker compose up
[+] Running 1/1
⠿ Container okta-backup Recreated 0.8s
Attaching to okta-backup
okta-backup | 2023/11/19 09:20:30 Attempting an import of ALL resources in okta
okta-backup | 2023/11/19 09:20:32 okta importing... okta_app_auto_login
...
okta-backup | 2023/11/19 09:23:58 okta save okta_policy_rule_password
okta-backup | 2023/11/19 09:23:58 okta save tfstate for okta_policy_rule_password
okta-backup exited with code 0
总结
如果定期运行这个,它似乎可以用作备份。只是Terraform和Okta供应商的版本比较旧,Terraformer也还没有达到1.0版本,这在实际工作中使用时可能有些担忧。我认为这比没有备份要好一些。
补充记录
目前看起来目录应用程序似乎不支持Terraform。
另外,在提供备份和恢复的SaaS服务中,我们找到了以下两个选项。