Rego インラインポリシー
このページでは、ワークフロー中のジョブに対して Rego で記述されたインラインポリシーと、Shisho Cloud の間の API 仕様を示します。
jobs[].decide.rego
に関する API
jobs[].decide.rego
に指定されたインラインポリシーは、ワークフロー の持つ「データ取得 → 検査/監査 → 結果の通知・結果の記録」という機能のうち、検査・監査の役割を持ちます。
パッケージ名
制限はありません。自由なパッケージ名を指定できます。
package arbitrary.name.could.be.specified
ポリシー実行時の入力
jobs[].decide.rego
に指定されたインラインポリシーに対しては、いくつかの入力が与えられます。
input
input
変数には、jobs[].decide.input.schema
に指定された GraphQL クエリにより取得されたデータが格納されます。
info
例えば同 GraphQL クエリが以下のようなものだったとします:
query {
github {
organizations {
login
requiresTwoFactorAuthentication
}
}
}
このとき、インラインポリシー中からアクセスできる input
という変数に、以下のようなオブジェクトが格納されます:
{
"github": {
"organizations": [
{
"login": "octcat",
"requiresTwoFactorAuthentication": true
},
{
"login": "your-org-name",
"requiresTwoFactorAuthentication": false
}
]
}
}
インラインポリシーから上記のオブジェクトへのアクセスは、以下のようにして行えます:
org := input.github.organizations[_]
data.shisho
data.shisho
変数には、Shisho Cloud 公式の Rego ライブラリ 中の定義が格納されています。
info
例えば、shisho.decision.dependency パッケージ中の package_known_vulnerability 関数 にアクセスしたい場合、以下のような Rego ポリシーを記述できます:
import data.shisho
x := shisho.decision.dependency.package_known_vulnerability(...)