Hi Wendell,
        Thanks for pointing out the typo in the example. I'll request an update 
to the pubs to fix that. 

        The CREDSNAM DD names a file that contains the credentials you want to 
add. It looks like your credential file is mostly there. The accessKey value 
should be the Azure storage account name. However, the contents of the 
credentials file has an extra comma after the "secretAccessKey" value. That is 
what it is complaining about in the GDKU0034E ERROR PARSING CREDENTIALS FILE 
message. 
        The intent of the CREDSNAM DD file is that it holds the actual cloud 
credentials you are adding for that user, i.e. the same ones you enter with the 
ISPF application. So, it would be different for each user. The idea is that the 
security admin gets the credentials into a file, uploads it to z/OS to a 
personal directory, runs the GDKUTIL to add those credentials, and then deletes 
the file because you don't want those credentials potentially exposed. I've 
seen some customers use automation like Jenkins or Ansible to create the file 
on z/OS with the credentials, before submitting the GDKUTIL job, and then 
deleting the temp credentials file before completing. 

Sincerely,
Andrew Wilt

DFSMSdfp CDA (Cloud Data Access) Product Owner
IBM Z Content Solutions | IBM z/OS Cloud Data Access
z/OS DFSMS Community

-----Original Message-----
From: IBM Mainframe Discussion List <[email protected]> On Behalf Of 
Wendell Lovewell
Sent: Tuesday, May 19, 2026 8:13 AM
To: [email protected]
Subject: [EXTERNAL] Re: ADRDSSU Restore CLOUD without ~/gdk files?

Thank you for your help Ernesto. 

I'm trying to run the job in Example 9 (from 
https://www.ibm.com/docs/en/zos/3.2.0?topic=examples-example-9-new-default-credentials-cloud1-provider
 ) 

But I don't think I understand what it's supposed to do.  

I ran:
//ADDKEYS  EXEC PGM=GDKUTIL,REGION=0M
//SYSPRINT  DD SYSOUT=L
//SYSOUT    DD SYSOUT=L
//SYSIN     DD *
 CREDENTIALS(ADD) PROVIDER(AZURE)
/*
//CREDSNAM DD *
 /usr/lpp/dfsms/gdk/azurekeys.json
/*

/usr/lpp/dfsms/gdk/azurekeys.json contains:
{
  "accessKey": "9xxxxxxxxxxxxx42",
  "secretAccessKey": "38Exxxx2348C3",
}

(btw, the EXEC stmt in the example didn't have a step name, and it also says 
//CREDSNAME, not //CREDSNAM.) 

But I got these error messages:

5695-DF124 DFSMSdfp CDA 3.2    CLOUD OBJECT UTILITY    2026139 14:26:16
 CREDENTIALS(ADD) PROVIDER(AZURE)
GDKU0013I CREDSNAM: /usr/lpp/dfsms/gdk/azurekeys.json

GDKU0030I BUCKET NAME NOT SPECIFIED FOR CREDS(ADD) COMMAND.  CREDENTIALS WILL 
BE SAVED AS DEFAULT CREDENTIALS

GDKU0034E ERROR PARSING CREDENTIALS FILE.  RC:  265 RSN:  104 DIAG:  Expected 
pair name in object at offset 364.

-should the file pointed to by CREDSNAM be a valid gdkkeyf.json file, or just 
the key/secretKey pair?   (Or should it be accessKey/secretAccessKey?) 

-should those 2 values be the storage account name and Access key we also enter 
from SYS1.SAXREXEC(GDKAUTHP), or from a different user's gdkkeyf.json file?  
(The keys stored for different users are different, so I doubt that's correct.  
Does Azure have both an accesskey and secretAccessKey?) 

Thanks again,
Wendell 

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
[email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to