diff --git a/gen/proto/go/accessgraph/v1alpha/aws.pb.go b/gen/proto/go/accessgraph/v1alpha/aws.pb.go
index 40dd308a4c202..4b8360988c853 100644
--- a/gen/proto/go/accessgraph/v1alpha/aws.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/aws.pb.go
@@ -212,6 +212,9 @@ type AWSResource struct {
// *AWSResource_RoleInlinePolicy
// *AWSResource_RoleAttachedPolicies
// *AWSResource_InstanceProfile
+ // *AWSResource_EksCluster
+ // *AWSResource_EksClusterAccessEntry
+ // *AWSResource_EksClusterAssociatedPolicy
Resource isAWSResource_Resource `protobuf_oneof:"resource"`
}
@@ -352,6 +355,27 @@ func (x *AWSResource) GetInstanceProfile() *AWSInstanceProfileV1 {
return nil
}
+func (x *AWSResource) GetEksCluster() *AWSEKSClusterV1 {
+ if x, ok := x.GetResource().(*AWSResource_EksCluster); ok {
+ return x.EksCluster
+ }
+ return nil
+}
+
+func (x *AWSResource) GetEksClusterAccessEntry() *AWSEKSClusterAccessEntryV1 {
+ if x, ok := x.GetResource().(*AWSResource_EksClusterAccessEntry); ok {
+ return x.EksClusterAccessEntry
+ }
+ return nil
+}
+
+func (x *AWSResource) GetEksClusterAssociatedPolicy() *AWSEKSAssociatedAccessPolicyV1 {
+ if x, ok := x.GetResource().(*AWSResource_EksClusterAssociatedPolicy); ok {
+ return x.EksClusterAssociatedPolicy
+ }
+ return nil
+}
+
type isAWSResource_Resource interface {
isAWSResource_Resource()
}
@@ -429,6 +453,21 @@ type AWSResource_InstanceProfile struct {
InstanceProfile *AWSInstanceProfileV1 `protobuf:"bytes,14,opt,name=instance_profile,json=instanceProfile,proto3,oneof"`
}
+type AWSResource_EksCluster struct {
+ // eks_cluster is an AWS EKS cluster.
+ EksCluster *AWSEKSClusterV1 `protobuf:"bytes,15,opt,name=eks_cluster,json=eksCluster,proto3,oneof"`
+}
+
+type AWSResource_EksClusterAccessEntry struct {
+ // eks_cluster_access_entry is an access entry for a cluster.
+ EksClusterAccessEntry *AWSEKSClusterAccessEntryV1 `protobuf:"bytes,16,opt,name=eks_cluster_access_entry,json=eksClusterAccessEntry,proto3,oneof"`
+}
+
+type AWSResource_EksClusterAssociatedPolicy struct {
+ // eks_cluster_associated_policy is an associated policy for a single cluster.
+ EksClusterAssociatedPolicy *AWSEKSAssociatedAccessPolicyV1 `protobuf:"bytes,17,opt,name=eks_cluster_associated_policy,json=eksClusterAssociatedPolicy,proto3,oneof"`
+}
+
func (*AWSResource_User) isAWSResource_Resource() {}
func (*AWSResource_Group) isAWSResource_Resource() {}
@@ -457,6 +496,12 @@ func (*AWSResource_RoleAttachedPolicies) isAWSResource_Resource() {}
func (*AWSResource_InstanceProfile) isAWSResource_Resource() {}
+func (*AWSResource_EksCluster) isAWSResource_Resource() {}
+
+func (*AWSResource_EksClusterAccessEntry) isAWSResource_Resource() {}
+
+func (*AWSResource_EksClusterAssociatedPolicy) isAWSResource_Resource() {}
+
// AWSUserInlinePolicyV1 is a policy that is inlined to an AWS user.
type AWSUserInlinePolicyV1 struct {
state protoimpl.MessageState
@@ -2205,6 +2250,413 @@ func (x *AWSInstanceProfileV1) GetAccountId() string {
return ""
}
+// AWSEKSClusterV1 represents an AWS EKS cluster.
+type AWSEKSClusterV1 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // name is the cluster name.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // arn is the cluster arn
+ Arn string `protobuf:"bytes,2,opt,name=arn,proto3" json:"arn,omitempty"`
+ // created_at is the time when the instance profile was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // status is the cluster status.
+ Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"`
+ // version is the Kubernetes version that the cluster runs.
+ Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"`
+ // tags is the list of tags that are attached to the instance profile.
+ Tags []*AWSTag `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"`
+ // region is the region where the cluster is located.
+ Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"`
+ // account_id is the ID of the AWS account that the instance profile belongs
+ // to.
+ AccountId string `protobuf:"bytes,8,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
+}
+
+func (x *AWSEKSClusterV1) Reset() {
+ *x = AWSEKSClusterV1{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[23]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AWSEKSClusterV1) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AWSEKSClusterV1) ProtoMessage() {}
+
+func (x *AWSEKSClusterV1) ProtoReflect() protoreflect.Message {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[23]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AWSEKSClusterV1.ProtoReflect.Descriptor instead.
+func (*AWSEKSClusterV1) Descriptor() ([]byte, []int) {
+ return file_accessgraph_v1alpha_aws_proto_rawDescGZIP(), []int{23}
+}
+
+func (x *AWSEKSClusterV1) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterV1) GetArn() string {
+ if x != nil {
+ return x.Arn
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterV1) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterV1) GetStatus() string {
+ if x != nil {
+ return x.Status
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterV1) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterV1) GetTags() []*AWSTag {
+ if x != nil {
+ return x.Tags
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterV1) GetRegion() string {
+ if x != nil {
+ return x.Region
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterV1) GetAccountId() string {
+ if x != nil {
+ return x.AccountId
+ }
+ return ""
+}
+
+// AWSEKSClusterAccessEntriesV1 represents an EKS cluster Access Entry.
+type AWSEKSClusterAccessEntryV1 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // cluster is the EKS cluster.
+ Cluster *AWSEKSClusterV1 `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ // access_entry_arn is the ARN of the access entry.
+ AccessEntryArn string `protobuf:"bytes,2,opt,name=access_entry_arn,json=accessEntryArn,proto3" json:"access_entry_arn,omitempty"`
+ // created_at is the time when the instance profile was created.
+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
+ // kubernetes_groups is the list of groups from which the principal will inherit its permissions.
+ KubernetesGroups []string `protobuf:"bytes,4,rep,name=kubernetes_groups,json=kubernetesGroups,proto3" json:"kubernetes_groups,omitempty"`
+ // created_at is the time when the instance profile was created.
+ ModifiedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=modified_at,json=modifiedAt,proto3" json:"modified_at,omitempty"`
+ // principal is the ARN of the IAM principal for the access entry.
+ PrincipalArn string `protobuf:"bytes,6,opt,name=principal_arn,json=principalArn,proto3" json:"principal_arn,omitempty"`
+ // tags is the list of tags that are attached to the instance profile.
+ Tags []*AWSTag `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
+ // type represents the type of the access entry.
+ Type string `protobuf:"bytes,8,opt,name=type,proto3" json:"type,omitempty"`
+ // username is the name of the Kubernetes user.
+ Username string `protobuf:"bytes,9,opt,name=username,proto3" json:"username,omitempty"`
+ // account_id is the ID of the AWS account that the instance profile belongs
+ // to.
+ AccountId string `protobuf:"bytes,10,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
+}
+
+func (x *AWSEKSClusterAccessEntryV1) Reset() {
+ *x = AWSEKSClusterAccessEntryV1{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[24]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AWSEKSClusterAccessEntryV1) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AWSEKSClusterAccessEntryV1) ProtoMessage() {}
+
+func (x *AWSEKSClusterAccessEntryV1) ProtoReflect() protoreflect.Message {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[24]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AWSEKSClusterAccessEntryV1.ProtoReflect.Descriptor instead.
+func (*AWSEKSClusterAccessEntryV1) Descriptor() ([]byte, []int) {
+ return file_accessgraph_v1alpha_aws_proto_rawDescGZIP(), []int{24}
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetCluster() *AWSEKSClusterV1 {
+ if x != nil {
+ return x.Cluster
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetAccessEntryArn() string {
+ if x != nil {
+ return x.AccessEntryArn
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetCreatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.CreatedAt
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetKubernetesGroups() []string {
+ if x != nil {
+ return x.KubernetesGroups
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetModifiedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ModifiedAt
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetPrincipalArn() string {
+ if x != nil {
+ return x.PrincipalArn
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetTags() []*AWSTag {
+ if x != nil {
+ return x.Tags
+ }
+ return nil
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *AWSEKSClusterAccessEntryV1) GetAccountId() string {
+ if x != nil {
+ return x.AccountId
+ }
+ return ""
+}
+
+// AWSEKSAssociatedAccessPolicyV1 identifies an access policy association.
+type AWSEKSAssociatedAccessPolicyV1 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // cluster is the EKS cluster.
+ Cluster *AWSEKSClusterV1 `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ // principal_arn is the principal that the associated access policy insides.
+ PrincipalArn string `protobuf:"bytes,2,opt,name=principal_arn,json=principalArn,proto3" json:"principal_arn,omitempty"`
+ // scope restricts the access policy.
+ Scope *AWSEKSAccessScopeV1 `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"`
+ // associated_at is the date and time the AccessPolicy was associated with an AccessEntry.
+ AssociatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=associated_at,json=associatedAt,proto3" json:"associated_at,omitempty"`
+ // modified_at is the last modification to the object.
+ ModifiedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=modified_at,json=modifiedAt,proto3" json:"modified_at,omitempty"`
+ // policy_arn is the ARN of the AccessPolicy.
+ // Managed by AWS.
+ PolicyArn string `protobuf:"bytes,6,opt,name=policy_arn,json=policyArn,proto3" json:"policy_arn,omitempty"`
+ // account_id is the ID of the AWS account that the instance profile belongs
+ // to.
+ AccountId string `protobuf:"bytes,7,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"`
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) Reset() {
+ *x = AWSEKSAssociatedAccessPolicyV1{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[25]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AWSEKSAssociatedAccessPolicyV1) ProtoMessage() {}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) ProtoReflect() protoreflect.Message {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[25]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AWSEKSAssociatedAccessPolicyV1.ProtoReflect.Descriptor instead.
+func (*AWSEKSAssociatedAccessPolicyV1) Descriptor() ([]byte, []int) {
+ return file_accessgraph_v1alpha_aws_proto_rawDescGZIP(), []int{25}
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetCluster() *AWSEKSClusterV1 {
+ if x != nil {
+ return x.Cluster
+ }
+ return nil
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetPrincipalArn() string {
+ if x != nil {
+ return x.PrincipalArn
+ }
+ return ""
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetScope() *AWSEKSAccessScopeV1 {
+ if x != nil {
+ return x.Scope
+ }
+ return nil
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetAssociatedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.AssociatedAt
+ }
+ return nil
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetModifiedAt() *timestamppb.Timestamp {
+ if x != nil {
+ return x.ModifiedAt
+ }
+ return nil
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetPolicyArn() string {
+ if x != nil {
+ return x.PolicyArn
+ }
+ return ""
+}
+
+func (x *AWSEKSAssociatedAccessPolicyV1) GetAccountId() string {
+ if x != nil {
+ return x.AccountId
+ }
+ return ""
+}
+
+// AWSEKSAccessScope identifies the scope to which the AssociatedAccessPolicy applies.
+type AWSEKSAccessScopeV1 struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // namespaces is the list of namespaces to scope the policy into.
+ Namespaces []string `protobuf:"bytes,1,rep,name=namespaces,proto3" json:"namespaces,omitempty"`
+ // type identifies which scope type was configured.
+ Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
+}
+
+func (x *AWSEKSAccessScopeV1) Reset() {
+ *x = AWSEKSAccessScopeV1{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[26]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AWSEKSAccessScopeV1) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AWSEKSAccessScopeV1) ProtoMessage() {}
+
+func (x *AWSEKSAccessScopeV1) ProtoReflect() protoreflect.Message {
+ mi := &file_accessgraph_v1alpha_aws_proto_msgTypes[26]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AWSEKSAccessScopeV1.ProtoReflect.Descriptor instead.
+func (*AWSEKSAccessScopeV1) Descriptor() ([]byte, []int) {
+ return file_accessgraph_v1alpha_aws_proto_rawDescGZIP(), []int{26}
+}
+
+func (x *AWSEKSAccessScopeV1) GetNamespaces() []string {
+ if x != nil {
+ return x.Namespaces
+ }
+ return nil
+}
+
+func (x *AWSEKSAccessScopeV1) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
var File_accessgraph_v1alpha_aws_proto protoreflect.FileDescriptor
var file_accessgraph_v1alpha_aws_proto_rawDesc = []byte{
@@ -2222,7 +2674,7 @@ var file_accessgraph_v1alpha_aws_proto_rawDesc = []byte{
0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x63,
0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xec, 0x08, 0x0a, 0x0b, 0x41, 0x57, 0x53,
+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x9b, 0x0b, 0x0a, 0x0b, 0x41, 0x57, 0x53,
0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67,
0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53,
@@ -2292,310 +2744,404 @@ var file_accessgraph_v1alpha_aws_proto_rawDesc = []byte{
0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74,
- 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72,
- 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x55,
- 0x73, 0x65, 0x72, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56,
- 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61,
- 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63,
- 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61,
- 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73,
- 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73,
- 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41,
- 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x4a, 0x04,
- 0x08, 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5,
- 0x03, 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x10,
- 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e,
- 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02,
+ 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x65,
+ 0x6b, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x56, 0x31, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x6b, 0x73, 0x43, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x18, 0x65, 0x6b, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79,
+ 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67,
+ 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53,
+ 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x56, 0x31, 0x48, 0x00, 0x52, 0x15, 0x65, 0x6b, 0x73, 0x43, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x78, 0x0a, 0x1d, 0x65, 0x6b, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
+ 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57,
+ 0x53, 0x45, 0x4b, 0x53, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x48, 0x00, 0x52, 0x1a,
+ 0x65, 0x6b, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69,
+ 0x61, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65,
+ 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x55, 0x73,
+ 0x65, 0x72, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d,
+ 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75,
+ 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63,
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65,
+ 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57,
+ 0x53, 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x4a, 0x04, 0x08,
+ 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd5, 0x03,
+ 0x0a, 0x0b, 0x41, 0x57, 0x53, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x10, 0x0a,
+ 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12,
+ 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x65,
+ 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
+ 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73,
+ 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x0c, 0x69, 0x73, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x12,
+ 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
+ 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69, 0x64,
+ 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49, 0x64,
+ 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
+ 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67,
+ 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18,
+ 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63,
+ 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x0a, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f,
+ 0x75, 0x70, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
+ 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+ 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
+ 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72,
+ 0x6f, 0x75, 0x70, 0x73, 0x56, 0x31, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61,
+ 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55, 0x73,
+ 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x06, 0x67, 0x72, 0x6f,
+ 0x75, 0x70, 0x73, 0x22, 0xa0, 0x03, 0x0a, 0x09, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x56,
+ 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+ 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12,
+ 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61,
+ 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75,
+ 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x61, 0x73, 0x73,
+ 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x64,
- 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
- 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
- 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73,
- 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
- 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69,
- 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65,
- 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
- 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x69,
- 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x49,
- 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61,
- 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x52, 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73,
+ 0x65, 0x64, 0x12, 0x62, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x2f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56,
+ 0x31, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f,
+ 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61,
+ 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61,
+ 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x06, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67,
+ 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
+ 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, 0x73,
+ 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64,
+ 0x61, 0x72, 0x79, 0x56, 0x31, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72,
+ 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12,
+ 0x6d, 0x0a, 0x19, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62,
+ 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68,
+ 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65,
+ 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72,
+ 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9a,
+ 0x03, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56, 0x31,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49,
+ 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a,
- 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a,
- 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
- 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f,
- 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x0a, 0x41, 0x57, 0x53, 0x47, 0x72,
- 0x6f, 0x75, 0x70, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
- 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
- 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x47,
- 0x72, 0x6f, 0x75, 0x70, 0x73, 0x56, 0x31, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18,
+ 0x6d, 0x70, 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16,
+ 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70,
+ 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67,
+ 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
+ 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x55,
+ 0x0a, 0x18, 0x69, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+ 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15,
+ 0x69, 0x61, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69,
+ 0x6c, 0x65, 0x41, 0x72, 0x6e, 0x12, 0x44, 0x0a, 0x0f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f,
+ 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+ 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6c, 0x61,
+ 0x75, 0x6e, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x17,
+ 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x55,
- 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x67,
- 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63,
- 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x06, 0x67, 0x72,
- 0x6f, 0x75, 0x70, 0x73, 0x22, 0xa0, 0x03, 0x0a, 0x09, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72,
- 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
- 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
- 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
- 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70,
- 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
- 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x61, 0x73,
- 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x61, 0x73, 0x74, 0x55,
- 0x73, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50, 0x65, 0x72,
- 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79,
- 0x56, 0x31, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42,
- 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
- 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
- 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54,
- 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4e, 0x0a, 0x06, 0x41, 0x57, 0x53, 0x54, 0x61,
- 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
- 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72,
- 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e,
- 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
- 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x61,
- 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
- 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72, 0x6e,
- 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
- 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70,
- 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x50,
+ 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x08, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
+ 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+ 0x70, 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x45, 0x0a,
+ 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56,
+ 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x61, 0x72, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75,
+ 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65,
+ 0x73, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76,
+ 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56,
+ 0x31, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
+ 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56,
+ 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x41,
+ 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
+ 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47,
+ 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a,
+ 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f,
+ 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42,
+ 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d,
+ 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
+ 0x12, 0x37, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23,
+ 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61,
+ 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x41, 0x43, 0x4c, 0x52, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x22, 0x76, 0x0a, 0x0e, 0x41, 0x57, 0x53,
+ 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x12, 0x44, 0x0a, 0x07, 0x67,
+ 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43,
+ 0x4c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65,
+ 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x22, 0x95, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65,
+ 0x74, 0x41, 0x43, 0x4c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64,
+ 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e,
+ 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23,
+ 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72,
+ 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0xc5, 0x04, 0x0a, 0x09, 0x41, 0x57,
+ 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x73, 0x73,
+ 0x75, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f,
+ 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x18,
+ 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12,
+ 0x6d, 0x61, 0x78, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61,
+ 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50,
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61,
- 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22,
- 0x9a, 0x03, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x56,
- 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
- 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12,
- 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05,
+ 0x72, 0x79, 0x56, 0x31, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c,
+ 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65,
+ 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x0a,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61,
0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61,
- 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x5f, 0x64, 0x6e, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x6e, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x55, 0x0a, 0x18, 0x69, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f,
- 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
- 0x15, 0x69, 0x61, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66,
- 0x69, 0x6c, 0x65, 0x41, 0x72, 0x6e, 0x12, 0x44, 0x0a, 0x0f, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68,
- 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6c,
- 0x61, 0x75, 0x6e, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xaf, 0x01, 0x0a,
- 0x17, 0x41, 0x57, 0x53, 0x55, 0x73, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67,
- 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53,
- 0x55, 0x73, 0x65, 0x72, 0x56, 0x31, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x08,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
- 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12,
- 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x45,
- 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e,
- 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x03, 0x61, 0x72, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f,
- 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69,
- 0x65, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e,
- 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70,
- 0x56, 0x31, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c,
+ 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x49, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x65, 0x5f,
+ 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73,
+ 0x65, 0x64, 0x56, 0x31, 0x52, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73,
+ 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
+ 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x19, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31, 0x12,
+ 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62,
+ 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f,
+ 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x6c, 0x0a, 0x19, 0x70, 0x65, 0x72,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72,
+ 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x61,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17,
+ 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64,
+ 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65, 0x4c,
+ 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x56, 0x31, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73,
+ 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6c,
+ 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72,
+ 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67,
+ 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x49,
+ 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27,
+ 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44,
+ 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x6f,
+ 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73,
+ 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41,
+ 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x07, 0x61, 0x77, 0x73, 0x52, 0x6f, 0x6c,
+ 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xc2, 0x01,
+ 0x0a, 0x17, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65,
+ 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x63,
0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x16,
- 0x41, 0x57, 0x53, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c,
- 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67,
- 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53,
- 0x47, 0x72, 0x6f, 0x75, 0x70, 0x56, 0x31, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27,
- 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
- 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44,
- 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
- 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63,
- 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x0d, 0x41, 0x57, 0x53, 0x53, 0x33,
- 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
- 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x44, 0x6f, 0x63, 0x75,
- 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69,
- 0x63, 0x12, 0x37, 0x0a, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31,
- 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65,
- 0x74, 0x41, 0x43, 0x4c, 0x52, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x22, 0x76, 0x0a, 0x0e, 0x41, 0x57,
- 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x43, 0x4c, 0x12, 0x44, 0x0a, 0x07,
- 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
+ 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x61,
+ 0x77, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41,
- 0x43, 0x4c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x52, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74,
- 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
- 0x6f, 0x6e, 0x22, 0x95, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x41, 0x43, 0x4c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c,
- 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64,
- 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0xc5, 0x04, 0x0a, 0x09, 0x41,
- 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x73,
- 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
- 0x18, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
- 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
- 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65,
- 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x12, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x61, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x6d, 0x69,
- 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
- 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
- 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64,
- 0x61, 0x72, 0x79, 0x56, 0x31, 0x52, 0x13, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f,
- 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x6f, 0x6c,
- 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
- 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
- 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54,
- 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x49, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x65,
- 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x23, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55,
- 0x73, 0x65, 0x64, 0x56, 0x31, 0x52, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x4c, 0x61, 0x73, 0x74, 0x55,
- 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69,
- 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x19, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69,
- 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x56, 0x31,
- 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f,
- 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42,
- 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x6c, 0x0a, 0x19, 0x70, 0x65,
- 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61,
- 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e,
- 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52,
- 0x17, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e,
- 0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6a, 0x0a, 0x0e, 0x52, 0x6f, 0x6c, 0x65,
- 0x4c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x56, 0x31, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61,
- 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c,
- 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06,
- 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65,
- 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x15, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65,
- 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x1f,
- 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
- 0x27, 0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65,
- 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08, 0x61, 0x77, 0x73, 0x5f, 0x72,
- 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65,
- 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
- 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x07, 0x61, 0x77, 0x73, 0x52, 0x6f,
- 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0xc2,
- 0x01, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
- 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61,
- 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
- 0x68, 0x61, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x56, 0x31, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a,
- 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x08,
- 0x61, 0x77, 0x73, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
- 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x07,
- 0x61, 0x77, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x72,
- 0x6f, 0x6c, 0x65, 0x22, 0xe1, 0x02, 0x0a, 0x14, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61,
- 0x6e, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03,
- 0x61, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39,
- 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
+ 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52, 0x07, 0x61,
+ 0x77, 0x73, 0x52, 0x6f, 0x6c, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x04, 0x72, 0x6f,
+ 0x6c, 0x65, 0x22, 0xe1, 0x02, 0x0a, 0x14, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
+ 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x56, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x61,
+ 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e, 0x12, 0x39, 0x0a,
+ 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
+ 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68,
+ 0x12, 0x34, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31, 0x52,
+ 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07,
+ 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61,
+ 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61,
+ 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x8c, 0x02, 0x0a, 0x0f, 0x41, 0x57, 0x53, 0x45, 0x4b,
+ 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10,
+ 0x0a, 0x03, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x72, 0x6e,
+ 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
+ 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a,
+ 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63,
+ 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x16,
+ 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
+ 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd0, 0x03, 0x0a, 0x1a, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53,
+ 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x56, 0x31, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
+ 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45,
+ 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x56, 0x31, 0x52, 0x07, 0x63, 0x6c, 0x75,
+ 0x73, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65,
+ 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
+ 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x39,
+ 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
- 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x73,
- 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
- 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
- 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74,
- 0x68, 0x12, 0x34, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76,
- 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x52, 0x6f, 0x6c, 0x65, 0x56, 0x31,
- 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
- 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72,
- 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x54,
- 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x2a, 0x90, 0x01, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6b, 0x75, 0x62,
+ 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04,
+ 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73,
+ 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c,
+ 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6e,
+ 0x63, 0x69, 0x70, 0x61, 0x6c, 0x41, 0x72, 0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73,
+ 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67,
+ 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53,
+ 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a,
+ 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63,
+ 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x81, 0x03, 0x0a, 0x1e, 0x41, 0x57, 0x53,
+ 0x45, 0x4b, 0x53, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63,
+ 0x65, 0x73, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x56, 0x31, 0x12, 0x3e, 0x0a, 0x07, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61,
+ 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x56, 0x31, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x70,
+ 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x41, 0x72, 0x6e,
+ 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x28, 0x2e, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2e, 0x76, 0x31,
+ 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x56, 0x31, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65,
+ 0x12, 0x3f, 0x0a, 0x0d, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
+ 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
+ 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x41,
+ 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d,
+ 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x61, 0x72, 0x6e, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x41, 0x72, 0x6e, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x13,
+ 0x41, 0x57, 0x53, 0x45, 0x4b, 0x53, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x70,
+ 0x65, 0x56, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
+ 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x90, 0x01, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72,
0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x6f, 0x75, 0x6e,
0x64, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x55, 0x53, 0x45, 0x52,
0x53, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x42, 0x4f,
@@ -2635,36 +3181,40 @@ func file_accessgraph_v1alpha_aws_proto_rawDescGZIP() []byte {
}
var file_accessgraph_v1alpha_aws_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_accessgraph_v1alpha_aws_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
+var file_accessgraph_v1alpha_aws_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_accessgraph_v1alpha_aws_proto_goTypes = []interface{}{
- (UsersPermissionsBoundaryType)(0), // 0: accessgraph.v1alpha.UsersPermissionsBoundaryType
- (RolePermissionsBoundaryType)(0), // 1: accessgraph.v1alpha.RolePermissionsBoundaryType
- (*AWSResourceList)(nil), // 2: accessgraph.v1alpha.AWSResourceList
- (*AWSResource)(nil), // 3: accessgraph.v1alpha.AWSResource
- (*AWSUserInlinePolicyV1)(nil), // 4: accessgraph.v1alpha.AWSUserInlinePolicyV1
- (*AWSPolicyV1)(nil), // 5: accessgraph.v1alpha.AWSPolicyV1
- (*AWSGroupV1)(nil), // 6: accessgraph.v1alpha.AWSGroupV1
- (*AWSUserGroupsV1)(nil), // 7: accessgraph.v1alpha.AWSUserGroupsV1
- (*AWSUserV1)(nil), // 8: accessgraph.v1alpha.AWSUserV1
- (*AWSTag)(nil), // 9: accessgraph.v1alpha.AWSTag
- (*UsersPermissionsBoundaryV1)(nil), // 10: accessgraph.v1alpha.UsersPermissionsBoundaryV1
- (*AWSInstanceV1)(nil), // 11: accessgraph.v1alpha.AWSInstanceV1
- (*AWSUserAttachedPolicies)(nil), // 12: accessgraph.v1alpha.AWSUserAttachedPolicies
- (*AttachedPolicyV1)(nil), // 13: accessgraph.v1alpha.AttachedPolicyV1
- (*AWSGroupAttachedPolicies)(nil), // 14: accessgraph.v1alpha.AWSGroupAttachedPolicies
- (*AWSGroupInlinePolicyV1)(nil), // 15: accessgraph.v1alpha.AWSGroupInlinePolicyV1
- (*AWSS3BucketV1)(nil), // 16: accessgraph.v1alpha.AWSS3BucketV1
- (*AWSS3BucketACL)(nil), // 17: accessgraph.v1alpha.AWSS3BucketACL
- (*AWSS3BucketACLGrantee)(nil), // 18: accessgraph.v1alpha.AWSS3BucketACLGrantee
- (*AWSRoleV1)(nil), // 19: accessgraph.v1alpha.AWSRoleV1
- (*RolePermissionsBoundaryV1)(nil), // 20: accessgraph.v1alpha.RolePermissionsBoundaryV1
- (*RoleLastUsedV1)(nil), // 21: accessgraph.v1alpha.RoleLastUsedV1
- (*AWSRoleInlinePolicyV1)(nil), // 22: accessgraph.v1alpha.AWSRoleInlinePolicyV1
- (*AWSRoleAttachedPolicies)(nil), // 23: accessgraph.v1alpha.AWSRoleAttachedPolicies
- (*AWSInstanceProfileV1)(nil), // 24: accessgraph.v1alpha.AWSInstanceProfileV1
- (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp
- (*wrapperspb.StringValue)(nil), // 26: google.protobuf.StringValue
- (*durationpb.Duration)(nil), // 27: google.protobuf.Duration
+ (UsersPermissionsBoundaryType)(0), // 0: accessgraph.v1alpha.UsersPermissionsBoundaryType
+ (RolePermissionsBoundaryType)(0), // 1: accessgraph.v1alpha.RolePermissionsBoundaryType
+ (*AWSResourceList)(nil), // 2: accessgraph.v1alpha.AWSResourceList
+ (*AWSResource)(nil), // 3: accessgraph.v1alpha.AWSResource
+ (*AWSUserInlinePolicyV1)(nil), // 4: accessgraph.v1alpha.AWSUserInlinePolicyV1
+ (*AWSPolicyV1)(nil), // 5: accessgraph.v1alpha.AWSPolicyV1
+ (*AWSGroupV1)(nil), // 6: accessgraph.v1alpha.AWSGroupV1
+ (*AWSUserGroupsV1)(nil), // 7: accessgraph.v1alpha.AWSUserGroupsV1
+ (*AWSUserV1)(nil), // 8: accessgraph.v1alpha.AWSUserV1
+ (*AWSTag)(nil), // 9: accessgraph.v1alpha.AWSTag
+ (*UsersPermissionsBoundaryV1)(nil), // 10: accessgraph.v1alpha.UsersPermissionsBoundaryV1
+ (*AWSInstanceV1)(nil), // 11: accessgraph.v1alpha.AWSInstanceV1
+ (*AWSUserAttachedPolicies)(nil), // 12: accessgraph.v1alpha.AWSUserAttachedPolicies
+ (*AttachedPolicyV1)(nil), // 13: accessgraph.v1alpha.AttachedPolicyV1
+ (*AWSGroupAttachedPolicies)(nil), // 14: accessgraph.v1alpha.AWSGroupAttachedPolicies
+ (*AWSGroupInlinePolicyV1)(nil), // 15: accessgraph.v1alpha.AWSGroupInlinePolicyV1
+ (*AWSS3BucketV1)(nil), // 16: accessgraph.v1alpha.AWSS3BucketV1
+ (*AWSS3BucketACL)(nil), // 17: accessgraph.v1alpha.AWSS3BucketACL
+ (*AWSS3BucketACLGrantee)(nil), // 18: accessgraph.v1alpha.AWSS3BucketACLGrantee
+ (*AWSRoleV1)(nil), // 19: accessgraph.v1alpha.AWSRoleV1
+ (*RolePermissionsBoundaryV1)(nil), // 20: accessgraph.v1alpha.RolePermissionsBoundaryV1
+ (*RoleLastUsedV1)(nil), // 21: accessgraph.v1alpha.RoleLastUsedV1
+ (*AWSRoleInlinePolicyV1)(nil), // 22: accessgraph.v1alpha.AWSRoleInlinePolicyV1
+ (*AWSRoleAttachedPolicies)(nil), // 23: accessgraph.v1alpha.AWSRoleAttachedPolicies
+ (*AWSInstanceProfileV1)(nil), // 24: accessgraph.v1alpha.AWSInstanceProfileV1
+ (*AWSEKSClusterV1)(nil), // 25: accessgraph.v1alpha.AWSEKSClusterV1
+ (*AWSEKSClusterAccessEntryV1)(nil), // 26: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1
+ (*AWSEKSAssociatedAccessPolicyV1)(nil), // 27: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1
+ (*AWSEKSAccessScopeV1)(nil), // 28: accessgraph.v1alpha.AWSEKSAccessScopeV1
+ (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp
+ (*wrapperspb.StringValue)(nil), // 30: google.protobuf.StringValue
+ (*durationpb.Duration)(nil), // 31: google.protobuf.Duration
}
var file_accessgraph_v1alpha_aws_proto_depIdxs = []int32{
3, // 0: accessgraph.v1alpha.AWSResourceList.resources:type_name -> accessgraph.v1alpha.AWSResource
@@ -2682,48 +3232,61 @@ var file_accessgraph_v1alpha_aws_proto_depIdxs = []int32{
22, // 12: accessgraph.v1alpha.AWSResource.role_inline_policy:type_name -> accessgraph.v1alpha.AWSRoleInlinePolicyV1
23, // 13: accessgraph.v1alpha.AWSResource.role_attached_policies:type_name -> accessgraph.v1alpha.AWSRoleAttachedPolicies
24, // 14: accessgraph.v1alpha.AWSResource.instance_profile:type_name -> accessgraph.v1alpha.AWSInstanceProfileV1
- 8, // 15: accessgraph.v1alpha.AWSUserInlinePolicyV1.user:type_name -> accessgraph.v1alpha.AWSUserV1
- 25, // 16: accessgraph.v1alpha.AWSPolicyV1.created_at:type_name -> google.protobuf.Timestamp
- 9, // 17: accessgraph.v1alpha.AWSPolicyV1.tags:type_name -> accessgraph.v1alpha.AWSTag
- 25, // 18: accessgraph.v1alpha.AWSPolicyV1.updated_at:type_name -> google.protobuf.Timestamp
- 25, // 19: accessgraph.v1alpha.AWSGroupV1.created_at:type_name -> google.protobuf.Timestamp
- 8, // 20: accessgraph.v1alpha.AWSUserGroupsV1.user:type_name -> accessgraph.v1alpha.AWSUserV1
- 6, // 21: accessgraph.v1alpha.AWSUserGroupsV1.groups:type_name -> accessgraph.v1alpha.AWSGroupV1
- 25, // 22: accessgraph.v1alpha.AWSUserV1.created_at:type_name -> google.protobuf.Timestamp
- 25, // 23: accessgraph.v1alpha.AWSUserV1.password_last_used:type_name -> google.protobuf.Timestamp
- 10, // 24: accessgraph.v1alpha.AWSUserV1.permissions_boundary:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryV1
- 9, // 25: accessgraph.v1alpha.AWSUserV1.tags:type_name -> accessgraph.v1alpha.AWSTag
- 26, // 26: accessgraph.v1alpha.AWSTag.value:type_name -> google.protobuf.StringValue
- 0, // 27: accessgraph.v1alpha.UsersPermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryType
- 25, // 28: accessgraph.v1alpha.AWSInstanceV1.launch_time:type_name -> google.protobuf.Timestamp
- 9, // 29: accessgraph.v1alpha.AWSInstanceV1.tags:type_name -> accessgraph.v1alpha.AWSTag
- 26, // 30: accessgraph.v1alpha.AWSInstanceV1.iam_instance_profile_arn:type_name -> google.protobuf.StringValue
- 26, // 31: accessgraph.v1alpha.AWSInstanceV1.launch_key_name:type_name -> google.protobuf.StringValue
- 8, // 32: accessgraph.v1alpha.AWSUserAttachedPolicies.user:type_name -> accessgraph.v1alpha.AWSUserV1
- 13, // 33: accessgraph.v1alpha.AWSUserAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1
- 6, // 34: accessgraph.v1alpha.AWSGroupAttachedPolicies.group:type_name -> accessgraph.v1alpha.AWSGroupV1
- 13, // 35: accessgraph.v1alpha.AWSGroupAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1
- 6, // 36: accessgraph.v1alpha.AWSGroupInlinePolicyV1.group:type_name -> accessgraph.v1alpha.AWSGroupV1
- 17, // 37: accessgraph.v1alpha.AWSS3BucketV1.acls:type_name -> accessgraph.v1alpha.AWSS3BucketACL
- 18, // 38: accessgraph.v1alpha.AWSS3BucketACL.grantee:type_name -> accessgraph.v1alpha.AWSS3BucketACLGrantee
- 25, // 39: accessgraph.v1alpha.AWSRoleV1.created_at:type_name -> google.protobuf.Timestamp
- 27, // 40: accessgraph.v1alpha.AWSRoleV1.max_session_duration:type_name -> google.protobuf.Duration
- 20, // 41: accessgraph.v1alpha.AWSRoleV1.permissions_boundary:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryV1
- 9, // 42: accessgraph.v1alpha.AWSRoleV1.tags:type_name -> accessgraph.v1alpha.AWSTag
- 21, // 43: accessgraph.v1alpha.AWSRoleV1.role_last_used:type_name -> accessgraph.v1alpha.RoleLastUsedV1
- 1, // 44: accessgraph.v1alpha.RolePermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryType
- 25, // 45: accessgraph.v1alpha.RoleLastUsedV1.last_used_date:type_name -> google.protobuf.Timestamp
- 19, // 46: accessgraph.v1alpha.AWSRoleInlinePolicyV1.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1
- 13, // 47: accessgraph.v1alpha.AWSRoleAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1
- 19, // 48: accessgraph.v1alpha.AWSRoleAttachedPolicies.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1
- 25, // 49: accessgraph.v1alpha.AWSInstanceProfileV1.created_at:type_name -> google.protobuf.Timestamp
- 19, // 50: accessgraph.v1alpha.AWSInstanceProfileV1.roles:type_name -> accessgraph.v1alpha.AWSRoleV1
- 9, // 51: accessgraph.v1alpha.AWSInstanceProfileV1.tags:type_name -> accessgraph.v1alpha.AWSTag
- 52, // [52:52] is the sub-list for method output_type
- 52, // [52:52] is the sub-list for method input_type
- 52, // [52:52] is the sub-list for extension type_name
- 52, // [52:52] is the sub-list for extension extendee
- 0, // [0:52] is the sub-list for field type_name
+ 25, // 15: accessgraph.v1alpha.AWSResource.eks_cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1
+ 26, // 16: accessgraph.v1alpha.AWSResource.eks_cluster_access_entry:type_name -> accessgraph.v1alpha.AWSEKSClusterAccessEntryV1
+ 27, // 17: accessgraph.v1alpha.AWSResource.eks_cluster_associated_policy:type_name -> accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1
+ 8, // 18: accessgraph.v1alpha.AWSUserInlinePolicyV1.user:type_name -> accessgraph.v1alpha.AWSUserV1
+ 29, // 19: accessgraph.v1alpha.AWSPolicyV1.created_at:type_name -> google.protobuf.Timestamp
+ 9, // 20: accessgraph.v1alpha.AWSPolicyV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 29, // 21: accessgraph.v1alpha.AWSPolicyV1.updated_at:type_name -> google.protobuf.Timestamp
+ 29, // 22: accessgraph.v1alpha.AWSGroupV1.created_at:type_name -> google.protobuf.Timestamp
+ 8, // 23: accessgraph.v1alpha.AWSUserGroupsV1.user:type_name -> accessgraph.v1alpha.AWSUserV1
+ 6, // 24: accessgraph.v1alpha.AWSUserGroupsV1.groups:type_name -> accessgraph.v1alpha.AWSGroupV1
+ 29, // 25: accessgraph.v1alpha.AWSUserV1.created_at:type_name -> google.protobuf.Timestamp
+ 29, // 26: accessgraph.v1alpha.AWSUserV1.password_last_used:type_name -> google.protobuf.Timestamp
+ 10, // 27: accessgraph.v1alpha.AWSUserV1.permissions_boundary:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryV1
+ 9, // 28: accessgraph.v1alpha.AWSUserV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 30, // 29: accessgraph.v1alpha.AWSTag.value:type_name -> google.protobuf.StringValue
+ 0, // 30: accessgraph.v1alpha.UsersPermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.UsersPermissionsBoundaryType
+ 29, // 31: accessgraph.v1alpha.AWSInstanceV1.launch_time:type_name -> google.protobuf.Timestamp
+ 9, // 32: accessgraph.v1alpha.AWSInstanceV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 30, // 33: accessgraph.v1alpha.AWSInstanceV1.iam_instance_profile_arn:type_name -> google.protobuf.StringValue
+ 30, // 34: accessgraph.v1alpha.AWSInstanceV1.launch_key_name:type_name -> google.protobuf.StringValue
+ 8, // 35: accessgraph.v1alpha.AWSUserAttachedPolicies.user:type_name -> accessgraph.v1alpha.AWSUserV1
+ 13, // 36: accessgraph.v1alpha.AWSUserAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1
+ 6, // 37: accessgraph.v1alpha.AWSGroupAttachedPolicies.group:type_name -> accessgraph.v1alpha.AWSGroupV1
+ 13, // 38: accessgraph.v1alpha.AWSGroupAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1
+ 6, // 39: accessgraph.v1alpha.AWSGroupInlinePolicyV1.group:type_name -> accessgraph.v1alpha.AWSGroupV1
+ 17, // 40: accessgraph.v1alpha.AWSS3BucketV1.acls:type_name -> accessgraph.v1alpha.AWSS3BucketACL
+ 18, // 41: accessgraph.v1alpha.AWSS3BucketACL.grantee:type_name -> accessgraph.v1alpha.AWSS3BucketACLGrantee
+ 29, // 42: accessgraph.v1alpha.AWSRoleV1.created_at:type_name -> google.protobuf.Timestamp
+ 31, // 43: accessgraph.v1alpha.AWSRoleV1.max_session_duration:type_name -> google.protobuf.Duration
+ 20, // 44: accessgraph.v1alpha.AWSRoleV1.permissions_boundary:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryV1
+ 9, // 45: accessgraph.v1alpha.AWSRoleV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 21, // 46: accessgraph.v1alpha.AWSRoleV1.role_last_used:type_name -> accessgraph.v1alpha.RoleLastUsedV1
+ 1, // 47: accessgraph.v1alpha.RolePermissionsBoundaryV1.permissions_boundary_type:type_name -> accessgraph.v1alpha.RolePermissionsBoundaryType
+ 29, // 48: accessgraph.v1alpha.RoleLastUsedV1.last_used_date:type_name -> google.protobuf.Timestamp
+ 19, // 49: accessgraph.v1alpha.AWSRoleInlinePolicyV1.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1
+ 13, // 50: accessgraph.v1alpha.AWSRoleAttachedPolicies.policies:type_name -> accessgraph.v1alpha.AttachedPolicyV1
+ 19, // 51: accessgraph.v1alpha.AWSRoleAttachedPolicies.aws_role:type_name -> accessgraph.v1alpha.AWSRoleV1
+ 29, // 52: accessgraph.v1alpha.AWSInstanceProfileV1.created_at:type_name -> google.protobuf.Timestamp
+ 19, // 53: accessgraph.v1alpha.AWSInstanceProfileV1.roles:type_name -> accessgraph.v1alpha.AWSRoleV1
+ 9, // 54: accessgraph.v1alpha.AWSInstanceProfileV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 29, // 55: accessgraph.v1alpha.AWSEKSClusterV1.created_at:type_name -> google.protobuf.Timestamp
+ 9, // 56: accessgraph.v1alpha.AWSEKSClusterV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 25, // 57: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1
+ 29, // 58: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.created_at:type_name -> google.protobuf.Timestamp
+ 29, // 59: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.modified_at:type_name -> google.protobuf.Timestamp
+ 9, // 60: accessgraph.v1alpha.AWSEKSClusterAccessEntryV1.tags:type_name -> accessgraph.v1alpha.AWSTag
+ 25, // 61: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.cluster:type_name -> accessgraph.v1alpha.AWSEKSClusterV1
+ 28, // 62: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.scope:type_name -> accessgraph.v1alpha.AWSEKSAccessScopeV1
+ 29, // 63: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.associated_at:type_name -> google.protobuf.Timestamp
+ 29, // 64: accessgraph.v1alpha.AWSEKSAssociatedAccessPolicyV1.modified_at:type_name -> google.protobuf.Timestamp
+ 65, // [65:65] is the sub-list for method output_type
+ 65, // [65:65] is the sub-list for method input_type
+ 65, // [65:65] is the sub-list for extension type_name
+ 65, // [65:65] is the sub-list for extension extendee
+ 0, // [0:65] is the sub-list for field type_name
}
func init() { file_accessgraph_v1alpha_aws_proto_init() }
@@ -3008,6 +3571,54 @@ func file_accessgraph_v1alpha_aws_proto_init() {
return nil
}
}
+ file_accessgraph_v1alpha_aws_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AWSEKSClusterV1); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_accessgraph_v1alpha_aws_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AWSEKSClusterAccessEntryV1); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_accessgraph_v1alpha_aws_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AWSEKSAssociatedAccessPolicyV1); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_accessgraph_v1alpha_aws_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AWSEKSAccessScopeV1); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
}
file_accessgraph_v1alpha_aws_proto_msgTypes[1].OneofWrappers = []interface{}{
(*AWSResource_User)(nil),
@@ -3024,6 +3635,9 @@ func file_accessgraph_v1alpha_aws_proto_init() {
(*AWSResource_RoleInlinePolicy)(nil),
(*AWSResource_RoleAttachedPolicies)(nil),
(*AWSResource_InstanceProfile)(nil),
+ (*AWSResource_EksCluster)(nil),
+ (*AWSResource_EksClusterAccessEntry)(nil),
+ (*AWSResource_EksClusterAssociatedPolicy)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -3031,7 +3645,7 @@ func file_accessgraph_v1alpha_aws_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_accessgraph_v1alpha_aws_proto_rawDesc,
NumEnums: 2,
- NumMessages: 23,
+ NumMessages: 27,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/go.mod b/go.mod
index b5c4cf3674516..0e2858d0453e4 100644
--- a/go.mod
+++ b/go.mod
@@ -37,7 +37,7 @@ require (
github.com/andybalholm/brotli v1.0.5
github.com/aquasecurity/libbpfgo v0.5.1-libbpf-1.2
github.com/armon/go-radix v1.0.0
- github.com/aws/aws-sdk-go v1.47.0
+ github.com/aws/aws-sdk-go v1.50.36
github.com/aws/aws-sdk-go-v2 v1.22.2
github.com/aws/aws-sdk-go-v2/config v1.19.1
github.com/aws/aws-sdk-go-v2/credentials v1.13.43
diff --git a/go.sum b/go.sum
index 9d0756d8d5d9d..a197d5bb1881c 100644
--- a/go.sum
+++ b/go.sum
@@ -197,8 +197,8 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ
github.com/aws/aws-sdk-go v1.17.4/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
github.com/aws/aws-sdk-go v1.44.263/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go v1.47.0 h1:/JUg9V1+xh+qBn8A6ec/l15ETPaMaBqxkjz+gg63dNk=
-github.com/aws/aws-sdk-go v1.47.0/go.mod h1:DlEaEbWKZmsITVbqlSVvekPARM1HzeV9PMYg15ymSDA=
+github.com/aws/aws-sdk-go v1.50.36 h1:PjWXHwZPuTLMR1NIb8nEjLucZBMzmf84TLoLbD8BZqk=
+github.com/aws/aws-sdk-go v1.50.36/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
diff --git a/lib/cloud/mocks/aws.go b/lib/cloud/mocks/aws.go
index e650d859402dc..3560ed0a73fa4 100644
--- a/lib/cloud/mocks/aws.go
+++ b/lib/cloud/mocks/aws.go
@@ -236,13 +236,17 @@ func (m *IAMErrorMock) PutUserPolicyWithContext(ctx aws.Context, input *iam.PutU
// EKSMock is a mock EKS client.
type EKSMock struct {
eksiface.EKSAPI
- Clusters []*eks.Cluster
- Notify chan struct{}
+ Clusters []*eks.Cluster
+ AccessEntries []*eks.AccessEntry
+ AssociatedPolicies []*eks.AssociatedAccessPolicy
+ Notify chan struct{}
}
func (e *EKSMock) DescribeClusterWithContext(_ aws.Context, req *eks.DescribeClusterInput, _ ...request.Option) (*eks.DescribeClusterOutput, error) {
defer func() {
- e.Notify <- struct{}{}
+ if e.Notify != nil {
+ e.Notify <- struct{}{}
+ }
}()
for _, cluster := range e.Clusters {
if aws.StringValue(req.Name) == aws.StringValue(cluster.Name) {
@@ -251,3 +255,63 @@ func (e *EKSMock) DescribeClusterWithContext(_ aws.Context, req *eks.DescribeClu
}
return nil, trace.NotFound("cluster %v not found", aws.StringValue(req.Name))
}
+
+func (e *EKSMock) ListClustersPagesWithContext(_ aws.Context, _ *eks.ListClustersInput, f func(*eks.ListClustersOutput, bool) bool, _ ...request.Option) error {
+ defer func() {
+ if e.Notify != nil {
+ e.Notify <- struct{}{}
+ }
+ }()
+ clusters := make([]*string, 0, len(e.Clusters))
+ for _, cluster := range e.Clusters {
+ clusters = append(clusters, cluster.Name)
+ }
+ f(&eks.ListClustersOutput{
+ Clusters: clusters,
+ }, true)
+ return nil
+}
+
+func (e *EKSMock) ListAccessEntriesPagesWithContext(_ aws.Context, _ *eks.ListAccessEntriesInput, f func(*eks.ListAccessEntriesOutput, bool) bool, _ ...request.Option) error {
+ defer func() {
+ if e.Notify != nil {
+ e.Notify <- struct{}{}
+ }
+ }()
+ accessEntries := make([]*string, 0, len(e.Clusters))
+ for _, a := range e.AccessEntries {
+ accessEntries = append(accessEntries, a.PrincipalArn)
+ }
+ f(&eks.ListAccessEntriesOutput{
+ AccessEntries: accessEntries,
+ }, true)
+ return nil
+}
+
+func (e *EKSMock) DescribeAccessEntryWithContext(_ aws.Context, req *eks.DescribeAccessEntryInput, _ ...request.Option) (*eks.DescribeAccessEntryOutput, error) {
+ defer func() {
+ if e.Notify != nil {
+ e.Notify <- struct{}{}
+ }
+ }()
+ for _, a := range e.AccessEntries {
+ if aws.StringValue(req.PrincipalArn) == aws.StringValue(a.PrincipalArn) && aws.StringValue(a.ClusterName) == aws.StringValue(req.ClusterName) {
+ return &eks.DescribeAccessEntryOutput{AccessEntry: a}, nil
+ }
+ }
+ return nil, trace.NotFound("access entry %v not found", aws.StringValue(req.PrincipalArn))
+}
+
+func (e *EKSMock) ListAssociatedAccessPoliciesPagesWithContext(_ aws.Context, _ *eks.ListAssociatedAccessPoliciesInput, f func(*eks.ListAssociatedAccessPoliciesOutput, bool) bool, _ ...request.Option) error {
+ defer func() {
+ if e.Notify != nil {
+ e.Notify <- struct{}{}
+ }
+ }()
+
+ f(&eks.ListAssociatedAccessPoliciesOutput{
+ AssociatedAccessPolicies: e.AssociatedPolicies,
+ }, true)
+ return nil
+
+}
diff --git a/lib/srv/discovery/fetchers/aws-sync/aws-sync.go b/lib/srv/discovery/fetchers/aws-sync/aws-sync.go
index f3e7fa716da22..3d1e97217dc2a 100644
--- a/lib/srv/discovery/fetchers/aws-sync/aws-sync.go
+++ b/lib/srv/discovery/fetchers/aws-sync/aws-sync.go
@@ -102,6 +102,12 @@ type Resources struct {
RoleAttachedPolicies []*accessgraphv1alpha.AWSRoleAttachedPolicies
// InstanceProfiles is the list of AWS IAM instance profiles.
InstanceProfiles []*accessgraphv1alpha.AWSInstanceProfileV1
+ // EKSClusters is the list of EKS clusters
+ EKSClusters []*accessgraphv1alpha.AWSEKSClusterV1
+ // AssociatedAccessPolicies is the list of Associated Access policies
+ AssociatedAccessPolicies []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1
+ // AccessEntries is the list of Access Entries.
+ AccessEntries []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1
}
// NewAWSFetcher creates a new AWS fetcher.
@@ -172,6 +178,9 @@ func (a *awsFetcher) poll(ctx context.Context) (*Resources, error) {
// fetch AWS S3 buckets.
eGroup.Go(a.pollAWSS3Buckets(ctx, result, collectErr))
+ // fetch AWS EKS clusters
+ eGroup.Go(a.pollAWSEKSClusters(ctx, result, collectErr))
+
if err := eGroup.Wait(); err != nil {
return nil, trace.Wrap(err)
}
diff --git a/lib/srv/discovery/fetchers/aws-sync/eks.go b/lib/srv/discovery/fetchers/aws-sync/eks.go
new file mode 100644
index 0000000000000..5dbc99633f7fc
--- /dev/null
+++ b/lib/srv/discovery/fetchers/aws-sync/eks.go
@@ -0,0 +1,298 @@
+/*
+ * Teleport
+ * Copyright (C) 2024 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package aws_sync
+
+import (
+ "context"
+ "sync"
+
+ "github.com/aws/aws-sdk-go/aws"
+ "github.com/aws/aws-sdk-go/service/eks"
+ "github.com/aws/aws-sdk-go/service/eks/eksiface"
+ "github.com/gravitational/trace"
+ "golang.org/x/sync/errgroup"
+
+ accessgraphv1alpha "github.com/gravitational/teleport/gen/proto/go/accessgraph/v1alpha"
+)
+
+// pollAWSEKSClusters is a function that returns a function that fetches
+// eks clusters and their access scope levels.
+func (a *awsFetcher) pollAWSEKSClusters(ctx context.Context, result *Resources, collectErr func(error)) func() error {
+ return func() error {
+ output, err := a.fetchAWSSEKSClusters(ctx)
+ if err != nil {
+ collectErr(trace.Wrap(err, "failed to fetch eks clusters"))
+ }
+ result.EKSClusters = output.clusters
+ result.AssociatedAccessPolicies = output.associatedPolicies
+ result.AccessEntries = output.accessEntry
+ return nil
+ }
+}
+
+// fetchAWSEKSClustersOutput is the output of the fetchAWSSEKSClusters function.
+type fetchAWSEKSClustersOutput struct {
+ clusters []*accessgraphv1alpha.AWSEKSClusterV1
+ associatedPolicies []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1
+ accessEntry []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1
+}
+
+// fetchAWSSEKSClusters fetches eks instances from all regions.
+func (a *awsFetcher) fetchAWSSEKSClusters(ctx context.Context) (fetchAWSEKSClustersOutput, error) {
+ var (
+ output fetchAWSEKSClustersOutput
+ hostsMu sync.Mutex
+ errs []error
+ )
+ eG, ctx := errgroup.WithContext(ctx)
+ // Set the limit to 10 to avoid too many concurrent requests.
+ // This is a temporary solution until we have a better way to limit the
+ // number of concurrent requests.
+ eG.SetLimit(10)
+ collectClusters := func(cluster *accessgraphv1alpha.AWSEKSClusterV1,
+ clusterAssociatedPolicies []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1,
+ clusterAccessEntries []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1,
+ err error) {
+ hostsMu.Lock()
+ defer hostsMu.Unlock()
+ if err != nil {
+ errs = append(errs, err)
+ }
+ if cluster != nil {
+ output.clusters = append(output.clusters, cluster)
+ }
+ output.associatedPolicies = append(output.associatedPolicies, clusterAssociatedPolicies...)
+ output.accessEntry = append(output.accessEntry, clusterAccessEntries...)
+ }
+
+ for _, region := range a.Regions {
+ region := region
+ eG.Go(func() error {
+ eksClient, err := a.CloudClients.GetAWSEKSClient(ctx, region, a.getAWSOptions()...)
+ if err != nil {
+ collectClusters(nil, nil, nil, trace.Wrap(err))
+ return nil
+ }
+
+ var eksClusterNames []string
+ // ListClustersPagesWithContext returns a list of EKS cluster names existing in the region.
+ err = eksClient.ListClustersPagesWithContext(
+ ctx,
+ &eks.ListClustersInput{},
+ func(output *eks.ListClustersOutput, lastPage bool) bool {
+ for _, cluster := range output.Clusters {
+ eksClusterNames = append(eksClusterNames, aws.StringValue(cluster))
+ }
+ return !lastPage
+
+ },
+ )
+ if err != nil {
+ collectClusters(nil, nil, nil, trace.Wrap(err))
+ }
+
+ for _, cluster := range eksClusterNames {
+ // DescribeClusterWithContext retrieves the cluster details.
+ cluster, err := eksClient.DescribeClusterWithContext(ctx, &eks.DescribeClusterInput{
+ Name: aws.String(cluster),
+ },
+ )
+ if err != nil {
+ collectClusters(nil, nil, nil, trace.Wrap(err))
+ return nil
+ }
+ protoCluster := awsEKSClusterToProtoCluster(cluster.Cluster, region, a.AccountID)
+
+ // if eks cluster only allows CONFIGMAP auth, skip polling of access entries and
+ // associated policies.
+ if cluster.Cluster != nil && cluster.Cluster.AccessConfig != nil &&
+ aws.StringValue(cluster.Cluster.AccessConfig.AuthenticationMode) == eks.AuthenticationModeConfigMap {
+ collectClusters(protoCluster, nil, nil, nil)
+ continue
+ }
+ // fetchAccessEntries retries the list of configured access entries
+ accessEntries, err := a.fetchAccessEntries(ctx, eksClient, protoCluster)
+ if err != nil {
+ collectClusters(nil, nil, nil, trace.Wrap(err))
+ }
+
+ accessEntryARNs := make([]string, 0, len(accessEntries))
+ for _, accessEntry := range accessEntries {
+ accessEntryARNs = append(
+ accessEntryARNs,
+ accessEntry.PrincipalArn,
+ )
+ }
+
+ associatedPolicies, err := a.fetchAssociatedPolicies(ctx, eksClient, protoCluster, accessEntryARNs)
+ if err != nil {
+ collectClusters(nil, nil, nil, trace.Wrap(err))
+ }
+ collectClusters(protoCluster, associatedPolicies, accessEntries, nil)
+ }
+ return nil
+ })
+ }
+
+ err := eG.Wait()
+ return output, trace.NewAggregate(append(errs, err)...)
+}
+
+// awsEKSClusterToProtoCluster converts an eks.Cluster to accessgraphv1alpha.AWSEKSClusterV1
+// representation.
+func awsEKSClusterToProtoCluster(cluster *eks.Cluster, region, accountID string) *accessgraphv1alpha.AWSEKSClusterV1 {
+ var tags []*accessgraphv1alpha.AWSTag
+ for k, v := range cluster.Tags {
+ tags = append(tags, &accessgraphv1alpha.AWSTag{
+ Key: k,
+ Value: strPtrToWrapper(v),
+ })
+ }
+
+ return &accessgraphv1alpha.AWSEKSClusterV1{
+ Name: aws.StringValue(cluster.Name),
+ Arn: aws.StringValue(cluster.Arn),
+ CreatedAt: awsTimeToProtoTime(cluster.CreatedAt),
+ Status: aws.StringValue(cluster.Status),
+ Region: region,
+ AccountId: accountID,
+ Tags: tags,
+ }
+}
+
+// fetchAccessEntries fetches the access entries for the given cluster.
+func (a *awsFetcher) fetchAccessEntries(ctx context.Context, eksClient eksiface.EKSAPI, cluster *accessgraphv1alpha.AWSEKSClusterV1) ([]*accessgraphv1alpha.AWSEKSClusterAccessEntryV1, error) {
+ var accessEntries []string
+ var errs []error
+
+ err := eksClient.ListAccessEntriesPagesWithContext(
+ ctx,
+ &eks.ListAccessEntriesInput{
+ ClusterName: aws.String(cluster.Name),
+ },
+ func(output *eks.ListAccessEntriesOutput, lastPage bool) bool {
+ for _, accessEntry := range output.AccessEntries {
+ accessEntries = append(accessEntries, aws.StringValue(accessEntry))
+ }
+ return !lastPage
+ },
+ )
+ if err != nil {
+ errs = append(errs, trace.Wrap(err))
+ return nil, trace.NewAggregate(errs...)
+ }
+
+ var protoAccessEntries []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1
+ for _, accessEntry := range accessEntries {
+ rsp, err := eksClient.DescribeAccessEntryWithContext(
+ ctx,
+ &eks.DescribeAccessEntryInput{
+ PrincipalArn: aws.String(accessEntry),
+ ClusterName: aws.String(cluster.Name),
+ },
+ )
+ if err != nil {
+ errs = append(errs, trace.Wrap(err))
+ continue
+ }
+ protoAccessEntry := awsAccessEntryToProtoAccessEntry(
+ rsp.AccessEntry,
+ cluster,
+ a.AccountID,
+ )
+ protoAccessEntries = append(protoAccessEntries, protoAccessEntry)
+ }
+ return protoAccessEntries, trace.NewAggregate(errs...)
+}
+
+// awsAccessEntryToProtoAccessEntry converts an eks.AccessEntry to accessgraphv1alpha.AWSEKSClusterV1
+func awsAccessEntryToProtoAccessEntry(accessEntry *eks.AccessEntry, cluster *accessgraphv1alpha.AWSEKSClusterV1, accountID string) *accessgraphv1alpha.AWSEKSClusterAccessEntryV1 {
+ var tags []*accessgraphv1alpha.AWSTag
+ for k, v := range accessEntry.Tags {
+ tags = append(tags, &accessgraphv1alpha.AWSTag{
+ Key: k,
+ Value: strPtrToWrapper(v),
+ })
+ }
+ out := &accessgraphv1alpha.AWSEKSClusterAccessEntryV1{
+ Cluster: cluster,
+ AccessEntryArn: aws.StringValue(accessEntry.AccessEntryArn),
+ CreatedAt: awsTimeToProtoTime(accessEntry.CreatedAt),
+ KubernetesGroups: aws.StringValueSlice(accessEntry.KubernetesGroups),
+ Username: aws.StringValue(accessEntry.Username),
+ ModifiedAt: awsTimeToProtoTime(accessEntry.ModifiedAt),
+ PrincipalArn: aws.StringValue(accessEntry.PrincipalArn),
+ Type: aws.StringValue(accessEntry.Type),
+ Tags: tags,
+ AccountId: accountID,
+ }
+
+ return out
+}
+
+// fetchAccessEntries fetches the access entries for the given cluster.
+func (a *awsFetcher) fetchAssociatedPolicies(ctx context.Context, eksClient eksiface.EKSAPI, cluster *accessgraphv1alpha.AWSEKSClusterV1, arns []string) ([]*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1, error) {
+ var associatedPolicies []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1
+ var errs []error
+ for _, arn := range arns {
+ err := eksClient.ListAssociatedAccessPoliciesPagesWithContext(
+ ctx,
+ &eks.ListAssociatedAccessPoliciesInput{
+ ClusterName: aws.String(cluster.Name),
+ },
+ func(output *eks.ListAssociatedAccessPoliciesOutput, lastPage bool) bool {
+ for _, policy := range output.AssociatedAccessPolicies {
+ associatedPolicies = append(associatedPolicies,
+ awsAssociatedAccessPolicy(policy, cluster, arn, a.AccountID),
+ )
+ }
+ return !lastPage
+ },
+ )
+ if err != nil {
+ errs = append(errs, trace.Wrap(err))
+
+ }
+
+ }
+
+ return associatedPolicies, trace.NewAggregate(errs...)
+}
+
+// awsAssociatedAccessPolicy converts an eks.AssociatedAccessPolicy to accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1
+func awsAssociatedAccessPolicy(policy *eks.AssociatedAccessPolicy, cluster *accessgraphv1alpha.AWSEKSClusterV1, principalARN, accountID string) *accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1 {
+ var accessScope *accessgraphv1alpha.AWSEKSAccessScopeV1
+ if policy.AccessScope != nil {
+ accessScope = &accessgraphv1alpha.AWSEKSAccessScopeV1{
+ Namespaces: aws.StringValueSlice(policy.AccessScope.Namespaces),
+ Type: aws.StringValue(policy.AccessScope.Type),
+ }
+ }
+ out := &accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1{
+ Cluster: cluster,
+ AssociatedAt: awsTimeToProtoTime(policy.AssociatedAt),
+ ModifiedAt: awsTimeToProtoTime(policy.ModifiedAt),
+ PrincipalArn: principalARN,
+ PolicyArn: aws.StringValue(policy.PolicyArn),
+ Scope: accessScope,
+ AccountId: accountID,
+ }
+
+ return out
+}
diff --git a/lib/srv/discovery/fetchers/aws-sync/eks_test.go b/lib/srv/discovery/fetchers/aws-sync/eks_test.go
new file mode 100644
index 0000000000000..689ea860302ee
--- /dev/null
+++ b/lib/srv/discovery/fetchers/aws-sync/eks_test.go
@@ -0,0 +1,210 @@
+/*
+ * Teleport
+ * Copyright (C) 2024 Gravitational, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package aws_sync
+
+import (
+ "context"
+ "sync"
+ "testing"
+ "time"
+
+ "github.com/aws/aws-sdk-go/aws"
+ "github.com/aws/aws-sdk-go/service/eks"
+ "github.com/google/go-cmp/cmp"
+ "github.com/stretchr/testify/require"
+ "google.golang.org/protobuf/testing/protocmp"
+ "google.golang.org/protobuf/types/known/timestamppb"
+ "google.golang.org/protobuf/types/known/wrapperspb"
+
+ accessgraphv1alpha "github.com/gravitational/teleport/gen/proto/go/accessgraph/v1alpha"
+ "github.com/gravitational/teleport/lib/cloud"
+ "github.com/gravitational/teleport/lib/cloud/mocks"
+)
+
+var (
+ date = time.Date(2024, 03, 12, 0, 0, 0, 0, time.UTC)
+ principalARN = "arn:iam:teleport"
+ accessEntryARN = "arn:iam:access_entry"
+)
+
+func TestPollAWSEKSClusters(t *testing.T) {
+ const (
+ accountID = "12345678"
+ )
+ var (
+ regions = []string{"eu-west-1"}
+ )
+ cluster := &accessgraphv1alpha.AWSEKSClusterV1{
+ Name: "cluster1",
+ Arn: "arn:us-west1:eks:cluster1",
+ CreatedAt: timestamppb.New(date),
+ Status: "ACTIVE",
+ Tags: []*accessgraphv1alpha.AWSTag{
+ {
+ Key: "tag1",
+ Value: nil,
+ },
+ {
+ Key: "tag2",
+ Value: wrapperspb.String("val2"),
+ },
+ },
+ Region: "eu-west-1",
+ AccountId: "12345678",
+ }
+ tests := []struct {
+ name string
+ want *Resources
+ }{
+ {
+ name: "poll eks clusters",
+ want: &Resources{
+ EKSClusters: []*accessgraphv1alpha.AWSEKSClusterV1{
+ cluster,
+ },
+ AccessEntries: []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1{
+ {
+ Cluster: cluster,
+ AccessEntryArn: "arn:iam:access_entry",
+ CreatedAt: timestamppb.New(date),
+ KubernetesGroups: []string{"teleport"},
+ ModifiedAt: timestamppb.New(date),
+ PrincipalArn: "arn:iam:teleport",
+ Tags: []*accessgraphv1alpha.AWSTag{
+ {
+ Key: "t1",
+ Value: wrapperspb.String("t2"),
+ },
+ },
+ Type: "cluster",
+ Username: "teleport",
+ AccountId: "12345678",
+ },
+ },
+ AssociatedAccessPolicies: []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1{
+ {
+ Cluster: cluster,
+ PrincipalArn: principalARN,
+ Scope: &accessgraphv1alpha.AWSEKSAccessScopeV1{
+ Type: eks.AccessScopeTypeCluster,
+ Namespaces: []string{"ns1"},
+ },
+ AssociatedAt: timestamppb.New(date),
+ ModifiedAt: timestamppb.New(date),
+ PolicyArn: "policy_arn",
+ AccountId: "12345678",
+ },
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ mockedClients := &cloud.TestCloudClients{
+ EKS: &mocks.EKSMock{
+ Clusters: eksClusters(),
+ AccessEntries: accessEntries(),
+ AssociatedPolicies: associatedPolicies(),
+ },
+ }
+
+ var (
+ errs []error
+ mu sync.Mutex
+ )
+
+ collectErr := func(err error) {
+ mu.Lock()
+ defer mu.Unlock()
+ errs = append(errs, err)
+ }
+ a := &awsFetcher{
+ Config: Config{
+ AccountID: accountID,
+ CloudClients: mockedClients,
+ Regions: regions,
+ Integration: accountID,
+ },
+ }
+ result := &Resources{}
+ execFunc := a.pollAWSEKSClusters(context.Background(), result, collectErr)
+ require.NoError(t, execFunc())
+ require.Empty(t, cmp.Diff(
+ tt.want,
+ result,
+ protocmp.Transform(),
+ // tags originate from a map so we must sort them before comparing.
+ protocmp.SortRepeated(
+ func(a, b *accessgraphv1alpha.AWSTag) bool {
+ return a.Key < b.Key
+ },
+ ),
+ ),
+ )
+
+ })
+ }
+}
+
+func eksClusters() []*eks.Cluster {
+ return []*eks.Cluster{
+ {
+ Name: aws.String("cluster1"),
+ Arn: aws.String("arn:us-west1:eks:cluster1"),
+ CreatedAt: aws.Time(date),
+ Status: aws.String(eks.AddonStatusActive),
+ Tags: map[string]*string{
+ "tag1": nil,
+ "tag2": aws.String("val2"),
+ },
+ },
+ }
+}
+
+func accessEntries() []*eks.AccessEntry {
+ return []*eks.AccessEntry{
+ {
+ PrincipalArn: aws.String(principalARN),
+ AccessEntryArn: aws.String(accessEntryARN),
+ CreatedAt: aws.Time(date),
+ ModifiedAt: aws.Time(date),
+ ClusterName: aws.String("cluster1"),
+ Tags: map[string]*string{
+ "t1": aws.String("t2"),
+ },
+ Type: aws.String(eks.AccessScopeTypeCluster),
+ Username: aws.String("teleport"),
+ KubernetesGroups: []*string{aws.String("teleport")},
+ },
+ }
+}
+
+func associatedPolicies() []*eks.AssociatedAccessPolicy {
+ return []*eks.AssociatedAccessPolicy{
+ {
+ AccessScope: &eks.AccessScope{
+ Namespaces: []*string{aws.String("ns1")},
+ Type: aws.String(eks.AccessScopeTypeCluster),
+ },
+ ModifiedAt: aws.Time(date),
+ AssociatedAt: aws.Time(date),
+ PolicyArn: aws.String("policy_arn"),
+ },
+ }
+}
diff --git a/lib/srv/discovery/fetchers/aws-sync/merge.go b/lib/srv/discovery/fetchers/aws-sync/merge.go
index bc46f67dc7900..9551f15a366b5 100644
--- a/lib/srv/discovery/fetchers/aws-sync/merge.go
+++ b/lib/srv/discovery/fetchers/aws-sync/merge.go
@@ -45,6 +45,9 @@ func MergeResources(results ...*Resources) *Resources {
result.RoleInlinePolicies = append(result.RoleInlinePolicies, r.RoleInlinePolicies...)
result.RoleAttachedPolicies = append(result.RoleAttachedPolicies, r.RoleAttachedPolicies...)
result.InstanceProfiles = append(result.InstanceProfiles, r.InstanceProfiles...)
+ result.AssociatedAccessPolicies = append(result.AssociatedAccessPolicies, r.AssociatedAccessPolicies...)
+ result.EKSClusters = append(result.EKSClusters, r.EKSClusters...)
+ result.AccessEntries = append(result.AccessEntries, r.AccessEntries...)
}
return result
}
diff --git a/lib/srv/discovery/fetchers/aws-sync/reconcile.go b/lib/srv/discovery/fetchers/aws-sync/reconcile.go
index 5dcc81dd02f9e..50776a61099f7 100644
--- a/lib/srv/discovery/fetchers/aws-sync/reconcile.go
+++ b/lib/srv/discovery/fetchers/aws-sync/reconcile.go
@@ -49,6 +49,9 @@ func ReconcileResults(old *Resources, new *Resources) (upsert, delete *accessgra
reconcileRoleInlinePolicies(old.RoleInlinePolicies, new.RoleInlinePolicies),
reconcileRoleAttachedPolicies(old.RoleAttachedPolicies, new.RoleAttachedPolicies),
reconcileInstanceProfiles(old.InstanceProfiles, new.InstanceProfiles),
+ reconcileEKSClusters(old.EKSClusters, new.EKSClusters),
+ reconcileAssociatedAccessPolicy(old.AssociatedAccessPolicies, new.AssociatedAccessPolicies),
+ reconcileAccessEntry(old.AccessEntries, new.AccessEntries),
} {
upsert.Resources = append(upsert.Resources, results.upsert.Resources...)
delete.Resources = append(delete.Resources, results.delete.Resources...)
@@ -447,3 +450,81 @@ func reconcileInstanceProfiles(
}
return &reconcileIntermeditateResult{upsert, delete}
}
+
+func reconcileEKSClusters(
+ old []*accessgraphv1alpha.AWSEKSClusterV1,
+ new []*accessgraphv1alpha.AWSEKSClusterV1,
+) *reconcileIntermeditateResult {
+ upsert, delete := &accessgraphv1alpha.AWSResourceList{}, &accessgraphv1alpha.AWSResourceList{}
+ toAdd, toRemove := reconcile(old, new, func(cluster *accessgraphv1alpha.AWSEKSClusterV1) string {
+ return fmt.Sprintf("%s;%s", cluster.AccountId, cluster.Arn)
+ })
+
+ for _, cluster := range toAdd {
+ upsert.Resources = append(upsert.Resources, &accessgraphv1alpha.AWSResource{
+ Resource: &accessgraphv1alpha.AWSResource_EksCluster{
+ EksCluster: cluster,
+ },
+ })
+ }
+ for _, cluster := range toRemove {
+ delete.Resources = append(delete.Resources, &accessgraphv1alpha.AWSResource{
+ Resource: &accessgraphv1alpha.AWSResource_EksCluster{
+ EksCluster: cluster,
+ },
+ })
+ }
+ return &reconcileIntermeditateResult{upsert, delete}
+}
+
+func reconcileAssociatedAccessPolicy(
+ old []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1,
+ new []*accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1,
+) *reconcileIntermeditateResult {
+ upsert, delete := &accessgraphv1alpha.AWSResourceList{}, &accessgraphv1alpha.AWSResourceList{}
+ toAdd, toRemove := reconcile(old, new, func(profile *accessgraphv1alpha.AWSEKSAssociatedAccessPolicyV1) string {
+ return fmt.Sprintf("%s;%s;%s;%s", profile.AccountId, profile.Cluster.Arn, profile.PrincipalArn, profile.PolicyArn)
+ })
+
+ for _, profile := range toAdd {
+ upsert.Resources = append(upsert.Resources, &accessgraphv1alpha.AWSResource{
+ Resource: &accessgraphv1alpha.AWSResource_EksClusterAssociatedPolicy{
+ EksClusterAssociatedPolicy: profile,
+ },
+ })
+ }
+ for _, profile := range toRemove {
+ delete.Resources = append(delete.Resources, &accessgraphv1alpha.AWSResource{
+ Resource: &accessgraphv1alpha.AWSResource_EksClusterAssociatedPolicy{
+ EksClusterAssociatedPolicy: profile,
+ },
+ })
+ }
+ return &reconcileIntermeditateResult{upsert, delete}
+}
+
+func reconcileAccessEntry(
+ old []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1,
+ new []*accessgraphv1alpha.AWSEKSClusterAccessEntryV1,
+) *reconcileIntermeditateResult {
+ upsert, delete := &accessgraphv1alpha.AWSResourceList{}, &accessgraphv1alpha.AWSResourceList{}
+ toAdd, toRemove := reconcile(old, new, func(profile *accessgraphv1alpha.AWSEKSClusterAccessEntryV1) string {
+ return fmt.Sprintf("%s;%s;%s;%s", profile.AccountId, profile.Cluster.Arn, profile.PrincipalArn, profile.AccessEntryArn)
+ })
+
+ for _, profile := range toAdd {
+ upsert.Resources = append(upsert.Resources, &accessgraphv1alpha.AWSResource{
+ Resource: &accessgraphv1alpha.AWSResource_EksClusterAccessEntry{
+ EksClusterAccessEntry: profile,
+ },
+ })
+ }
+ for _, profile := range toRemove {
+ delete.Resources = append(delete.Resources, &accessgraphv1alpha.AWSResource{
+ Resource: &accessgraphv1alpha.AWSResource_EksClusterAccessEntry{
+ EksClusterAccessEntry: profile,
+ },
+ })
+ }
+ return &reconcileIntermeditateResult{upsert, delete}
+}
diff --git a/proto/accessgraph/v1alpha/aws.proto b/proto/accessgraph/v1alpha/aws.proto
index b8fe943451368..7cd314ce4db54 100644
--- a/proto/accessgraph/v1alpha/aws.proto
+++ b/proto/accessgraph/v1alpha/aws.proto
@@ -65,6 +65,12 @@ message AWSResource {
AWSRoleAttachedPolicies role_attached_policies = 13;
// instance_profile is an AWS instance profile.
AWSInstanceProfileV1 instance_profile = 14;
+ // eks_cluster is an AWS EKS cluster.
+ AWSEKSClusterV1 eks_cluster = 15;
+ // eks_cluster_access_entry is an access entry for a cluster.
+ AWSEKSClusterAccessEntryV1 eks_cluster_access_entry = 16;
+ // eks_cluster_associated_policy is an associated policy for a single cluster.
+ AWSEKSAssociatedAccessPolicyV1 eks_cluster_associated_policy = 17;
}
}
@@ -385,3 +391,77 @@ message AWSInstanceProfileV1 {
// to.
string account_id = 8;
}
+
+// AWSEKSClusterV1 represents an AWS EKS cluster.
+message AWSEKSClusterV1 {
+ // name is the cluster name.
+ string name = 1;
+ // arn is the cluster arn
+ string arn = 2;
+ // created_at is the time when the instance profile was created.
+ google.protobuf.Timestamp created_at = 3;
+ // status is the cluster status.
+ string status = 4;
+ // version is the Kubernetes version that the cluster runs.
+ string version = 5;
+ // tags is the list of tags that are attached to the instance profile.
+ repeated AWSTag tags = 6;
+ // region is the region where the cluster is located.
+ string region = 7;
+ // account_id is the ID of the AWS account that the instance profile belongs
+ // to.
+ string account_id = 8;
+}
+
+// AWSEKSClusterAccessEntriesV1 represents an EKS cluster Access Entry.
+message AWSEKSClusterAccessEntryV1 {
+ // cluster is the EKS cluster.
+ AWSEKSClusterV1 cluster = 1;
+ // access_entry_arn is the ARN of the access entry.
+ string access_entry_arn = 2;
+ // created_at is the time when the instance profile was created.
+ google.protobuf.Timestamp created_at = 3;
+ // kubernetes_groups is the list of groups from which the principal will inherit its permissions.
+ repeated string kubernetes_groups = 4;
+ // created_at is the time when the instance profile was created.
+ google.protobuf.Timestamp modified_at = 5;
+ // principal is the ARN of the IAM principal for the access entry.
+ string principal_arn = 6;
+ // tags is the list of tags that are attached to the instance profile.
+ repeated AWSTag tags = 7;
+ // type represents the type of the access entry.
+ string type = 8;
+ // username is the name of the Kubernetes user.
+ string username = 9;
+ // account_id is the ID of the AWS account that the instance profile belongs
+ // to.
+ string account_id = 10;
+}
+
+// AWSEKSAssociatedAccessPolicyV1 identifies an access policy association.
+message AWSEKSAssociatedAccessPolicyV1 {
+ // cluster is the EKS cluster.
+ AWSEKSClusterV1 cluster = 1;
+ // principal_arn is the principal that the associated access policy insides.
+ string principal_arn = 2;
+ // scope restricts the access policy.
+ AWSEKSAccessScopeV1 scope = 3;
+ // associated_at is the date and time the AccessPolicy was associated with an AccessEntry.
+ google.protobuf.Timestamp associated_at = 4;
+ // modified_at is the last modification to the object.
+ google.protobuf.Timestamp modified_at = 5;
+ // policy_arn is the ARN of the AccessPolicy.
+ // Managed by AWS.
+ string policy_arn = 6;
+ // account_id is the ID of the AWS account that the instance profile belongs
+ // to.
+ string account_id = 7;
+}
+
+//AWSEKSAccessScope identifies the scope to which the AssociatedAccessPolicy applies.
+message AWSEKSAccessScopeV1 {
+ // namespaces is the list of namespaces to scope the policy into.
+ repeated string namespaces = 1;
+ // type identifies which scope type was configured.
+ string type = 2;
+}