ポリシーとは、セキュリティとコンプライアンスのポリシーを実行可能なコードとして記述する方法です。これらのポリシーは、組織のアプリケーションやインフラストラクチャと共に使用され、セキュリティとコンプライアンス要件を満たすことを保証します。
従来のセキュリティとコンプライアンスの手法と比較して、ポリシーとしてのコードはより効率的かつ正確な適用方法を提供します。また、開発および展開プロセス内でセキュリティとコンプライアンスのポリシーを自動化することで、効率を向上させ、運用リスクを減らすことができます。
ポリシーとしてのコードはどのように機能するのですか?
ポリシーとしてのコードは、次の3つの主要なコンポーネントに依存しています。
データ
クラウド、SaaS、またはインフラストラクチャ環境を分析するためには、基礎となるデータを取得する必要があります。ポリシーとしてのコードツールの文脈では、データは通常、プロバイダを使用して取得されます。Selefraの場合、プロバイダはさまざまなクラウドサービスプロバイダからデータを取得するために使用されます。Selefraの実行の初期段階では、オープンソースの(またはユーザー定義の)プロバイダが使用されて、クラウドリソースのデータが指定されたPostgreSQLデータベースに取得および保存されます。このデータは、後続のステップでポリシーの作成と分析の基礎として機能します。
ポリシー
ポリシーは、意思決定の振る舞いをシミュレートするコードとして記述されます。これらのルールは、セキュリティ、コンプライアンス、またはベストプラクティスの要件を記述します。ポリシーは、業界の標準(CISベンチマークなど)または組織内のポリシーに基づくことができます。自然言語、ドメイン固有言語(DSL)、またはコードを使用して表現することができます。Selefraでは、ポリシーはYAML形式で定義され、プレースホルダーとSQLステートメントが使用されます。
yaml
Copy code
rules:
- name: bucket_acl_publicly_writeable
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 publicly writable, ARN: {{.arn}}"
上記の例では、Selefraはユーザーの設定に基づいてAWSデータを取得し、指定された形式で保存します。次に、定義されたルールを適用して非準拠のアイテムを特定します。
実行
データとポリシーが整ったら、ポリシーを実行し、セキュリティ上のリスクやコンプライアンスの違反をクエリするためのツールが必要です。Selefraの場合、ポリシーは実行可能なコードとして解釈されます。ポリシーのクエリセクションが実行され、結果がフォーマットされ、出力セクションを使用して出力されます。ユーザーは、クラウドリソースの特定の問題をコンソールで確認することができます。
結論
これで、ポリシーとしてのコード製品の概要説明が終わりました。実装の各ステップでは、重要なコード設計が必要です。私たちの今後の記事では、私たちのチームが各ステップのアーキテクチャ設計とコード実装について詳細な説明を提供します。私たちのチームに興味を持ち、オープンソース製品のSelefraを体験したい場合は、以下をご覧ください。
GitHub: https://github.com/selefra/selefra
Slack: https://selefra.io/community/join
お読みいただき、ありがとうございました!