Selefra：TerraformおよびMuti-Cloudのオープンソースポリシー-as-Codeツール

私たちは、マルチクラウドおよびSaaSのアナリティクスを提供するオープンソースポリシー-as-codeソフトウェアであるSelefraのローンチを皆様と共有することを大変嬉しく思います。
![Selefra Infrastructure(3_2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3286109/de753ad6-4ef3-f73b-1859-5698647b9830.png)


## Selefraの目的

数年前、私はパブリッククラウドでの新しいセキュリティ攻撃技術の研究を行っていたとき、CTO、CISO、SREなどのポジションにいる友人と話しました。マルチクラウドシナリオでのリソース管理やコスト分析などの様々な問題を解決するために、自己開発されたツールや市販のツールを使用していることがわかりました。しかし、我々はすべて、クラウドサービスプロバイダーやSaaSベンダーが提供するAPIおよびSDKを使用してデータを収集するという同じ基本原則に依存していました。異なる分野でのすべてのクラウド分析シナリオが同じタイプのデータを必要とするため、マルチクラウド分析インフラツールを構築することが可能かどうか疑問に思いました。このツールは、標準的なデータ収集とより柔軟なデータ分析フレームワークを提供し、異なる分野の専門家が異なる分析言語を学ぶことなく、分析シナリオを構築することに集中できるようにすることができます。代表的なインフラストラクチャーとして、Terraformがマルチクラウドインフラストラクチャー構築の問題を解決したように、私たちはマルチクラウドインフラストラクチャーの統合分析問題を解決できる製品を持っていることを望んでいます。

私たちのツールは、

- マルチクラウドおよびSaaSサービスのデータ分析要件を満たすことができ、データソースをカスタマイズすることができます。
- 簡単な分析言語を提供します。
- コードで分析戦略を管理することができます。

これらの要件を満たすために、私たちのチームと私は、共通のパブリッククラウドリソースタイプをサポートするインフラストラクチャー分析のためのオープンソースツールを構築するために過去1年間を費やしました。私たちは、すべてのインフラストラクチャーをオープンソース手段で分析できるように顧客に提供するという私たちのビジョンを実現するために、今日この製品をオープンソースとしてリリースすることを大変嬉しく思います。SelefraはSelectとInfrastructureの組み合わせであり、顧客がデータや仕様について学ぶ時間を多く費やすことなく、インフラストラクチャーをより簡単に分析するためにSelefraを使用できることを願っています。

## Selefraとは

Selefraは、"select * from infrastructure"を意味します。AWS、GCP、Azure、Alibaba Cloud、Kubernetes、Github、Cloudflare、Slackなど、30以上のサービスを含むマルチクラウドおよびSaaS環境の分析を提供するオープンソースのインフラストラクチャコードソフトウェアです。

![Selefra Architecture(3_2) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3286109/73cf9889-4181-0018-9f6a-52379fa9df14.png)

### SQLは単純なポリシー言語

Selefraは、ポリシーを定義するためにSQL + YAMLを使用しており、開発者は特定のポリシー構文を学ぶ必要がなく、SQL構文を使用して簡単にポリシーを定義できます。TerraformプロバイダーをベースにしたSelefraは、豊富なデータ統合エコシステムを構築しています。開発者として、任意のインフラストラクチャのポリシーを簡単に開発および分析できます。

たとえば、AWS S3バケットに公開書き込みアクセスのセキュリティリスクがあるかどうかを分析するためにSQLを使用できます。

```yaml
selefra:
  name: selefra-demo
  cli_version: latest
  providers:
    - name: aws
      source: aws
      version: latest
rules:
  - name: bucket_resources
    query: |
      SELECT
        DISTINCT(a1.*)
      FROM
        aws_s3_buckets a1,
        aws_s3_bucket_grants a2
      WHERE
       a1.selefra_id = a2.aws_s3_buckets_selefra_id
        AND a2.grantee :: jsonb ->> 'URI' = 'http://acs.amazonaws.com/groups/global/AllUsers'
        AND a2.permission IN ('WRITE_ACP', 'FULL_CONTROL')
    output: "S3 bucket acl public writable, arn: {{.arn}} , bucket name: {{.name}}"
```

さらに、GCPストレージサービスのロギング機能が有効になっているかどうかを分析するためにも使用できます:

```yaml
selefra:
  name: selefra-demo
  cli_version: latest
  providers:
    - name: gcp
      source: gcp
      version: latest
rules:
  - name: bucket_logging_disable
    query: |
      SELECT
        *
      FROM
        gcp_storage_buckets
      WHERE
        logging IS NULL
    output: "Bucket logging disable, bucket name: {{.name}}, region: {{.location}}"
```

戦略のさらなる例については、Selefraオープンソースの例リポジトリを表示するには[https://github.com/selefra/selefra-module-template](https://github.com/selefra/selefra-module-template)をクリックするか、Selefraドキュメンテーション[https://www.selefra.io/docs/build-projects/overview](https://www.selefra.io/docs/build-projects/overview)に基づいて必要な戦略を作成してください。

### Selefraの機能

**ポリシー・アズ・コード**

SQLとYAMLの組み合わせでカスタム分析ポリシー（セキュリティ、コンプライアンス、コスト）を記述できます。

**マルチクラウド、マルチSaaSの構成**

SQLを介して、どのクラウドサービスからの構成データの分析もサポートできる統合マルチクラウド構成データ統合機能。

**バージョン管理**

GitHub / GitlabなどのVCSを介して分析ポリシーを管理できます。

**自動化**

定期タスクとクラウド自動化ツールを介して、ポリシーを自動化してコンプライアンス、セキュリティ、コスト最適化ルールを強制できます。

## 使い方

詳しいドキュメントは、[SelefraのGet Started](https://selefra.io/docs/get-started/)を読んでください。

クイックスタートのために、このデモを実行してください。数分以内に完了します。

1. Selefraをインストールする
    
    macOS以外のユーザーは、Selefraの[インストール方法](https://www.selefra.io/docs/get-started)を他の方法で行ってください。
    
    macOSの場合、Homebrewを使ってSelefraをタップしてください：
    
    ```
    brew tap selefra/tap
    ```
    
    次に、Selefraをインストールしてください:
    
    ```
    brew install selefra/tap/selefra
    ```
    
2. **初期化プロジェクト**
    
    ```
    mkdir selefra-demo && cd selefra-demo && selefra init
    ```
    
3. **コードをビルドする**
    
    ```
    selefra apply
    ```
## Selefra ロードマップ

- AWS、GCP、Azure、K8Sなどのスケールプロバイダのカバレッジを100％にするように拡大する。
- Terraform、Pulumi、Crossplaneなどの主流のIaCツールをサポートし、展開中および本番中にルールを有効にする。
- 合計70のプロバイダに到達するように、さらに30のSaaSプロバイダを拡大する。
- 要件やバグに関するフィードバックは、次のリンクから私たちのロードマップについて歓迎します：[https://github.com/orgs/selefra/projects/1](https://github.com/orgs/selefra/projects/1)

## **Supporting Quotes**

**Advance Groupのシニア情報セキュリティマネージャー、Salamanka**

Selefraは、クラウドプラットフォームでのセキュリティリスクを効果的に検出および識別し、セキュリティコンプライアンスを確保し、安全なベースラインを確立することで、クラウドプラットフォームの使用に関する懸念を軽減することができます。

**AirgramのCTOであるJay**

Selefraは、私たちが最も困難だと考えているAWS IAMを分析するのに役立ち、私たちの効率を大幅に向上させることができます。

**HashiCorp AmbassadorのZijie He**

Selefraは野心的で想像力に富んだオープンソースソフトウェアツールであり、IaCリソースをSQLテーブルに創造的に変換することで、コンプライアンスポリシー、FinOpsなどを含め、マルチクラウドインフラストラクチャリソースに基づくスーパーストラクチャを確立することができます。

## **Wrapping Up**

この記事を読んでSelefraに興味を持った場合は、こちらをクリックして詳細をご覧ください：[https://github.com/selefra/selefra](https://github.com/selefra/selefra)


私たちは、インフラストラクチャ開発、データエンジニアリング、およびその他の関連分野に情熱を持つ優れた個人と一緒に製品を構築することを熱望しており、あらゆる種類の貢献を歓迎します。

Slackや私たちの週次のオープンソースコミュニティミートアップに参加してください：[https://selefra.io/community/join](https://selefra.io/community/join)

**Selefraのその他のリンク：**

- 公式ウェブサイト：[https://selefra.io](https://selefra.io/)
- ブログ：[https://selefra.io/blog](https://selefra.io/blog)
- Slack：[https://selefra.io/community/join](https://selefra.io/community/join)
- Twitter：[https://twitter.com/SelefraCorp](https://twitter.com/SelefraCorp)

私たちは、Selefraを使用してどのようなシナリオを構築するか、そしてSelefraと一緒に成長することを非常に楽しみにしています！