コード例 #1
0
    public void DisposeKeyRing(string keyRingId)
    {
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        var listKeysRequest = new ListCryptoKeysRequest
        {
            ParentAsKeyRingName = new KeyRingName(ProjectId, LocationId, keyRingId),
        };

        foreach (var key in client.ListCryptoKeys(listKeysRequest))
        {
            if (key.RotationPeriod != null || key.NextRotationTime != null)
            {
                client.UpdateCryptoKey(new UpdateCryptoKeyRequest
                {
                    CryptoKey = new CryptoKey
                    {
                        CryptoKeyName    = key.CryptoKeyName,
                        RotationPeriod   = null,
                        NextRotationTime = null,
                    },
                    UpdateMask = new FieldMask
                    {
                        Paths = { "rotation_period", "next_rotation_time" }
                    },
                });
            }

            var listKeyVersionsRequest = new ListCryptoKeyVersionsRequest
            {
                ParentAsCryptoKeyName = key.CryptoKeyName,
                Filter = "state != DESTROYED AND state != DESTROY_SCHEDULED",
            };

            foreach (var keyVersion in client.ListCryptoKeyVersions(listKeyVersionsRequest))
            {
                client.DestroyCryptoKeyVersion(new DestroyCryptoKeyVersionRequest
                {
                    CryptoKeyVersionName = keyVersion.CryptoKeyVersionName,
                });
            }
        }
    }