Esempi di IAM che utilizzano SDK for PHP - AWS SDK for PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di IAM che utilizzano SDK for PHP

Gli esempi di codice seguenti mostrano come eseguire azioni e implementare scenari comuni utilizzando ilAWS SDK for PHPcon IAM.

Operazionisono estratti di codice che mostrano come eseguire chiamate alle singole funzioni IAM.

Scenarisono esempi di codice che mostrano come eseguire un'attività specifica richiamando più funzioni IAM.

Ogni esempio include un collegamento a GitHub, dove è possibile trovare le istruzioni su come configurare ed eseguire il codice nel contesto.

Operazioni

L'esempio di codice seguente mostra come allegare un criterio IAM a un ruolo.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); $assumeRolePolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": {\"AWS\": \"{$user['Arn']}\"}, \"Action\": \"sts:AssumeRole\" }] }"; $assumeRoleRole = $service->createRole("iam_demo_role_$uuid", $assumeRolePolicyDocument); echo "Created role: {$assumeRoleRole['RoleName']}\n"; $listAllBucketsPolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": \"s3:ListAllMyBuckets\", \"Resource\": \"arn:aws:s3:::*\"}] }"; $listAllBucketsPolicy = $service->createPolicy("iam_demo_policy_$uuid", $listAllBucketsPolicyDocument); echo "Created policy: {$listAllBucketsPolicy['PolicyName']}\n"; $service->attachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']); public function attachRolePolicy($roleName, $policyArn) { return $this->customWaiter(function () use ($roleName, $policyArn) { $this->iamClient->attachRolePolicy([ 'PolicyArn' => $policyArn, 'RoleName' => $roleName, ]); }); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.AttachRolePolicynelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come creare una policy IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); $listAllBucketsPolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": \"s3:ListAllMyBuckets\", \"Resource\": \"arn:aws:s3:::*\"}] }"; $listAllBucketsPolicy = $service->createPolicy("iam_demo_policy_$uuid", $listAllBucketsPolicyDocument); echo "Created policy: {$listAllBucketsPolicy['PolicyName']}\n"; public function createPolicy(string $policyName, string $policyDocument) { $result = $this->customWaiter(function () use ($policyName, $policyDocument) { return $this->iamClient->createPolicy([ 'PolicyName' => $policyName, 'PolicyDocument' => $policyDocument, ]); }); return $result['Policy']; }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.CreatePolicynelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come creare un ruolo IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); $assumeRolePolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": {\"AWS\": \"{$user['Arn']}\"}, \"Action\": \"sts:AssumeRole\" }] }"; $assumeRoleRole = $service->createRole("iam_demo_role_$uuid", $assumeRolePolicyDocument); echo "Created role: {$assumeRoleRole['RoleName']}\n"; /** * @param string $roleName * @param string $rolePolicyDocument * @return array * @throws AwsException */ public function createRole(string $roleName, string $rolePolicyDocument) { $result = $this->customWaiter(function () use ($roleName, $rolePolicyDocument) { return $this->iamClient->createRole([ 'AssumeRolePolicyDocument' => $rolePolicyDocument, 'RoleName' => $roleName, ]); }); return $result['Role']; }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.CreateRolenelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come creare un ruolo collegato al servizio IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function createServiceLinkedRole($awsServiceName, $customSuffix = "", $description = "") { $createServiceLinkedRoleArguments = ['AWSServiceName' => $awsServiceName]; if ($customSuffix) { $createServiceLinkedRoleArguments['CustomSuffix'] = $customSuffix; } if ($description) { $createServiceLinkedRoleArguments['Description'] = $description; } return $this->iamClient->createServiceLinkedRole($createServiceLinkedRoleArguments); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.CreateServiceLinkedRolenelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come creare un utente IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); $user = $service->createUser("iam_demo_user_$uuid"); echo "Created user with the arn: {$user['Arn']}\n"; /** * @param string $name * @return array * @throws AwsException */ public function createUser(string $name): array { $result = $this->iamClient->createUser([ 'UserName' => $name, ]); return $result['User']; }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.CreateUsernelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come ottenere una policy IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function getPolicy($policyArn) { return $this->customWaiter(function () use ($policyArn) { return $this->iamClient->getPolicy(['PolicyArn' => $policyArn]); }); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.GetPolicynelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come ottenere un ruolo IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function getRole($roleName) { return $this->customWaiter(function () use ($roleName) { return $this->iamClient->getRole(['RoleName' => $roleName]); }); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.GetRolenelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come ottenere i criteri di password dell'account IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function getAccountPasswordPolicy() { return $this->iamClient->getAccountPasswordPolicy(); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.GetAccountPasswordPolicynelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare tutti i provider SAML per IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function listSAMLProviders() { return $this->iamClient->listSAMLProviders(); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.Elenca i provider AMLnelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare i gruppi IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function listGroups($pathPrefix = "", $marker = "", $maxItems = 0) { $listGroupsArguments = []; if ($pathPrefix) { $listGroupsArguments["PathPrefix"] = $pathPrefix; } if ($marker) { $listGroupsArguments["Marker"] = $marker; } if ($maxItems) { $listGroupsArguments["MaxItems"] = $maxItems; } return $this->iamClient->listGroups($listGroupsArguments); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.ListGroupsnelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare i criteri in linea per un ruolo IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function listRolePolicies($roleName, $marker = "", $maxItems = 0) { $listRolePoliciesArguments = ['RoleName' => $roleName]; if ($marker) { $listRolePoliciesArguments['Marker'] = $marker; } if ($maxItems) { $listRolePoliciesArguments['MaxItems'] = $maxItems; } return $this->customWaiter(function () use ($listRolePoliciesArguments) { return $this->iamClient->listRolePolicies($listRolePoliciesArguments); }); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.ListRolePoliciesnelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare i criteri IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function listPolicies($pathPrefix = "", $marker = "", $maxItems = 0) { $listPoliciesArguments = []; if ($pathPrefix) { $listPoliciesArguments["PathPrefix"] = $pathPrefix; } if ($marker) { $listPoliciesArguments["Marker"] = $marker; } if ($maxItems) { $listPoliciesArguments["MaxItems"] = $maxItems; } return $this->iamClient->listPolicies($listPoliciesArguments); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.ListPoliciesnelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare i criteri associati a un ruolo IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function listAttachedRolePolicies($roleName, $pathPrefix = "", $marker = "", $maxItems = 0) { $listAttachRolePoliciesArguments = ['RoleName' => $roleName]; if ($pathPrefix) { $listAttachRolePoliciesArguments['PathPrefix'] = $pathPrefix; } if ($marker) { $listAttachRolePoliciesArguments['Marker'] = $marker; } if ($maxItems) { $listAttachRolePoliciesArguments['MaxItems'] = $maxItems; } return $this->iamClient->listAttachedRolePolicies($listAttachRolePoliciesArguments); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.ListAttachedRolePoliciesnelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare tutti i ruoli IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); /** * @param string $pathPrefix * @param string $marker * @param int $maxItems * @return Result * $roles = $service->listRoles(); */ public function listRoles($pathPrefix = "", $marker = "", $maxItems = 0) { $listRolesArguments = []; if ($pathPrefix) { $listRolesArguments["PathPrefix"] = $pathPrefix; } if ($marker) { $listRolesArguments["Marker"] = $marker; } if ($maxItems) { $listRolesArguments["MaxItems"] = $maxItems; } return $this->iamClient->listRoles($listRolesArguments); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.ListRolesnelAWS SDK for PHPDocumentazione di riferimento API.

L'esempio di codice seguente mostra come elencare tutti gli utenti IAM.

SDK for PHP

$uuid = uniqid(); $service = new IamService(); public function listUsers($pathPrefix = "", $marker = "", $maxItems = 0) { $listUsersArguments = []; if ($pathPrefix) { $listUsersArguments["PathPrefix"] = $pathPrefix; } if ($marker) { $listUsersArguments["Marker"] = $marker; } if ($maxItems) { $listUsersArguments["MaxItems"] = $maxItems; } return $this->iamClient->listUsers($listUsersArguments); }
  • Trova istruzioni e altro codice su GitHub.

  • Per informazioni dettagliate, consulta.ListUsersnelAWS SDK for PHPDocumentazione di riferimento API.

Scenari

L'esempio di codice seguente mostra come:

  • Crea un utente che non dispone di autorizzazioni.

  • Crea un ruolo che conceda l'autorizzazione per elencare i bucket Amazon S3 per l'account.

  • Aggiungi un criterio per consentire all'utente di assumere il ruolo.

  • Assumi il ruolo e elenca i bucket Amazon S3 utilizzando credenziali temporanee.

  • Elimina il criterio, il ruolo e l'utente.

SDK for PHP

namespace Iam\Basics; require 'vendor/autoload.php'; use Aws\Credentials\Credentials; use Aws\S3\Exception\S3Exception; use Aws\S3\S3Client; use Aws\Sts\StsClient; use Iam\IamService; echo("--------------------------------------\n"); print("Welcome to the Amazon IAM getting started demo using PHP!\n"); echo("--------------------------------------\n"); $uuid = uniqid(); $service = new IamService(); $user = $service->createUser("iam_demo_user_$uuid"); echo "Created user with the arn: {$user['Arn']}\n"; $key = $service->createAccessKey($user['UserName']); $assumeRolePolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": {\"AWS\": \"{$user['Arn']}\"}, \"Action\": \"sts:AssumeRole\" }] }"; $assumeRoleRole = $service->createRole("iam_demo_role_$uuid", $assumeRolePolicyDocument); echo "Created role: {$assumeRoleRole['RoleName']}\n"; $listAllBucketsPolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": \"s3:ListAllMyBuckets\", \"Resource\": \"arn:aws:s3:::*\"}] }"; $listAllBucketsPolicy = $service->createPolicy("iam_demo_policy_$uuid", $listAllBucketsPolicyDocument); echo "Created policy: {$listAllBucketsPolicy['PolicyName']}\n"; $service->attachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']); $inlinePolicyDocument = "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": \"sts:AssumeRole\", \"Resource\": \"{$assumeRoleRole['Arn']}\"}] }"; $inlinePolicy = $service->createUserPolicy("iam_demo_inline_policy_$uuid", $inlinePolicyDocument, $user['UserName']); //First, fail to list the buckets with the user $credentials = new Credentials($key['AccessKeyId'], $key['SecretAccessKey']); $s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]); try { $s3Client->listBuckets([ ]); echo "this should not run"; } catch (S3Exception $exception) { echo "successfully failed!\n"; } $stsClient = new StsClient(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]); sleep(10); $assumedRole = $stsClient->assumeRole([ 'RoleArn' => $assumeRoleRole['Arn'], 'RoleSessionName' => "DemoAssumeRoleSession_$uuid", ]); $assumedCredentials = [ 'key' => $assumedRole['Credentials']['AccessKeyId'], 'secret' => $assumedRole['Credentials']['SecretAccessKey'], 'token' => $assumedRole['Credentials']['SessionToken'], ]; $s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $assumedCredentials]); try { $s3Client->listBuckets([ ]); echo "this should now run!\n"; } catch (S3Exception $exception) { echo "this should now not fail\n"; } $service->detachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']); $deletePolicy = $service->deletePolicy($listAllBucketsPolicy['Arn']); echo "Delete policy: {$listAllBucketsPolicy['PolicyName']}\n"; $deletedRole = $service->deleteRole($assumeRoleRole['Arn']); echo "Deleted role: {$assumeRoleRole['RoleName']}\n"; $deletedKey = $service->deleteAccessKey($key['AccessKeyId']); $deletedUser = $service->deleteUser($user['UserName']); echo "Delete user: {$user['UserName']}\n";