このトピックでは、Secret Manager での次のリソースリストの呼び出しにおけるフィルタリングのサポートについて説明します。
用途
リスト リクエストの本文に filter
文字列フィールドがある場合は、list
オペレーションでインテントをフィルタリングすることを示しています。この API では、フィルタリングされるオブジェクト内のフィールドの参照に、簡単な言語が使用されます。
次の例では、シークレットのサブセットに「asecret」または「bsecret」のいずれかの部分文字列が含まれていると仮定します。これらのシークレットに一致するフィルタを指定します。 結果は名前の昇順で並べ替えられます。
gcloud
フィルタは --filter
フラグを使用して指定します。フィルタにスペースやその他の特殊文字が含まれている場合は、引用符で囲む必要があります。
gcloud secrets list --filter="name:asecret OR name:bsecret"
Google Cloud CLI は、次に示すように正規表現(REGEX)もサポートしています。
gcloud secrets list --filter='name ~ "secret_ab.*"'
API
次の例では、API の使用を示すために curl を使用します。gcloud auth print-access-token を使用してアクセス トークンを生成できます。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
フィルタは filter
クエリ文字列パラメータとして指定され、URL エンコードされている必要があります。たとえば、フィルタ name:asecret OR name:bsecret
は name%3Aasecret+OR+name%3Absecret
として URL エンコードされます。
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?filter=FILTER" \
--request "GET" \
--header "Authorization: Bearer ACCESS_TOKEN"
正規表現は API でサポートされていません。
例
シナリオ | フィルタ |
---|---|
名前に部分文字列 "mysecret" が含まれるシークレット |
name:mysecret |
特定のラベルを持つシークレット | labels.environment=production |
日時の範囲内で作成されたシークレット | create_time<2021-01-01T06:00:00Z AND create_time>2021-01-01T12:00:00Z |
自動レプリケーションによるシークレット | replication.automatic:* |
ユーザー管理のレプリケーションによるシークレットのうち、指定したいずれのリージョンにも保存されていないもの | replication.user_managed.replicas.location:* AND NOT replication.user_managed.replicas.location:(us-central1 OR us-east1) |
CMEK 鍵で暗号化されたシークレット | replication.user_managed.replicas.customerManagedEncryption:* |
特定の CMEK キーで暗号化されたシークレット | replication.user_managed.replicas.customerManagedEncryption.kmsKeyName=projects/p/locations/us-central1/keyRings/kr/cryptoKeys/my-cmek-key |
ローテーション期間のないシークレット | NOT rotation.next_rotation_time:* |
ローテーション期間が 30 日を超えるシークレット | rotation.rotation_period>259200s |
有効期限が設定されているシークレット | expire_time:* |
日付より前に期限切れになるシークレット | expire_time<2021-07-31 |
有効または無効なバージョン | state:(ENABLED OR DISABLED) |
破棄されたバージョン、日付より後に破棄されたバージョン | state:DESTROYED AND destroy_time>2021-01-01 |
フィルタの構文
フィルタの構文は、フィルタ対象となるオブジェクトの 1 つ以上のフィールドに対する式で構成されます。
式には次の演算子を使用できます。
演算子 | 説明 |
---|---|
= |
等しい。 |
> |
より大きい。 |
< |
未満。 |
>= |
以上。 |
<= |
以下。 |
!= - NOT |
等しくない。次の式はすべて同じ結果になります。name!="topsecret" -name="topsecret" NOT name="topsecret" |
: |
包含。これは、大文字と小文字が区別されない部分文字列一致です。
たとえば、 |
AND |
論理 AND
スペースは |
OR |
論理 OR。 |
* |
ワイルドカード
|
Cloud Search API と整合して、OR
はデフォルトで AND
よりも優先されます。括弧を使用すると、目的のオペレーションの優先度を指定できます。
time
値でフィルタする場合は、2020-10-15T01:30:15Z
のように、時刻を RFC 3399 形式の文字列にエンコードします。
サブフィールドにアクセスする場合は、ドット構文を使用します。たとえば、Secret
リソースには、値が Key-Value map
の labels
フィールドを含めることができます。color
ラベルを使用している場合、次のようにサブフィールド labels.color
で Secret
の結果をフィルタできます。
labels.color=red
color
ラベルセットを持つシークレットだけを一覧表示する場合は、ワイルドカードを使用します。
labels.color:*
引用符で囲まれた文字列は、一続きの値ではなく、単一の値として解釈されます。
フィルタ フィールド
Secret
または SecretVersion
オブジェクトの任意のフィールドでフィルタリングできます。
list メソッド | フィルタリング可能フィールドへのリンク |
---|---|
projects.secrets.list
|
シークレット フィールド |
projects.secrets.versions.list
|
SecretVersion フィールド |
結果の総数
リスト リクエストで filter
が設定されている場合、レスポンスに結果の総数(レスポンスの total_size=0
)は表示されません。
次のステップ
- シークレットを編集する方法を確認する。
- シークレットの有効期限を設定する方法を学習する。