cdk/cdk-domainless-mode/test-scripts/create_domain_joined_kerberos_leases.py (31 lines of code) (raw):

import grpc import credentialsfetcher_pb2 import credentialsfetcher_pb2_grpc import json import os ''' Use this script to create and test N leases for N domain-joined gMSA accounts. This script is run on a linux instance in stand-alone mode. ''' with open('../data.json', 'r') as file: # Load the JSON data data = json.load(file) def run(): with grpc.insecure_channel('unix:///var/credentials-fetcher/socket/credentials_fetcher.sock') as channel: stub = credentialsfetcher_pb2_grpc.CredentialsFetcherServiceStub(channel) number_of_gmsa_accounts = data["number_of_gmsa_accounts"] directory_name = data["directory_name"] netbios_name = data["netbios_name"] for i in range(1, number_of_gmsa_accounts): credspec_contents = f"""{{ "CmsPlugins": ["ActiveDirectory"], "DomainJoinConfig": {{ "Sid": "S-1-5-21-2725122404-4129967127-2630707939", "MachineAccountName": "DJ_WebApp0{i}", "Guid": "e96e0e09-9305-462f-9e44-8a8179722897", "DnsTreeName": "{directory_name}", "DnsName": "{directory_name}", "NetBiosName": "{netbios_name}" }}, "ActiveDirectoryConfig": {{ "GroupManagedServiceAccounts": [ {{"Name": "DJ_WebApp0{i}", "Scope": "{directory_name}"}}, {{"Name": "DJ_WebApp0{i}", "Scope": "{netbios_name}"}} ] }} }}""" contents = [credspec_contents] response = stub.AddKerberosLease( credentialsfetcher_pb2.CreateKerberosLeaseRequest( credspec_contents=contents ) ) lease_path = (f"/var/credentials-fetcher/krbdir/" f"{response.lease_id}/DJ_WebApp0{i}/krb5cc") assert os.path.exists(lease_path) print(f"Server response: {response}") if __name__ == '__main__': run()