Farklı kimlik sistemlerini senkronize etme

Google Cloud Search'te erişim denetimi, kullanıcının Google Hesabı'na göre yapılır. İçerik dizine eklenirken tüm öğe EKL'leri geçerli Google kullanıcı veya grup kimliklerine (e-posta adresleri) çözümlenmelidir.

Çoğu durumda, bir depo Google Hesapları hakkında doğrudan bilgiye sahip değildir. Bunun yerine, yerel hesaplar kullanıcıları temsil eder veya kullanıcılar bir kimlik sağlayıcıyla federasyon oturum açma özelliğini kullanır. E-posta adresi dışındaki bu tanımlamaya harici kimlik adı verilir.

Yönetici Konsolu kullanılarak oluşturulan kimlik kaynakları, kimlik sistemleri arasındaki boşluğu şu şekilde doldurur:

Kimlik kaynaklarını şu durumlarda kullanın:

  • Depo, kullanıcının Google Workspace veya Google Cloud Directory'deki birincil e-posta adresini bilmiyor.
  • Depo, Google Workspace'teki e-posta tabanlı gruplara karşılık gelmeyen erişim denetimi gruplarını tanımlar.

Kimlik kaynakları, dizine ekleme işlemini kimlik eşlemeden ayırarak verimliliği artırır. Bu, öğeleri dizine eklerken ve erişim kontrol listeleri oluştururken kullanıcı aramayı ertelemenize olanak tanır.

Örnek dağıtım

Şekil 1'de hem şirket içi hem de bulut depolarını kullanan bir işletme gösterilmektedir. Her biri farklı bir harici kimlik türü kullanır.

Farklı kimlik türleriyle örnek kurumsal dağıtım
Şekil 1. Farklı kimlik türleriyle örnek kurumsal dağıtım.

1. depo, kullanıcıları SAML kullanarak e-posta adresine göre tanımlar. Google Workspace veya Cloud Directory'deki birincil e-posta adresini bildiği için kimlik kaynağına ihtiyaç duymaz.

2. depo, şirket içi bir dizinle entegre olur ve kullanıcıları sAMAccountName ile tanımlar. Bu özelliği harici kimlik olarak kullandığı için kimlik kaynağı gerektirir.

Kimlik kaynağı oluşturma

Kimlik kaynağına ihtiyacınız varsa Cloud Search'te kullanıcı kimliklerini eşleme başlıklı makaleyi inceleyin.

İçerik bağlayıcı oluşturmadan önce kimlik kaynağını oluşturun. ACL'ler oluşturmak ve verileri dizine eklemek için kimlik kaynağının kimliğine ihtiyacınız vardır. Kimlik kaynağı oluşturduğunuzda, harici kimlikleri depolamak için Cloud Directory'de bir özel kullanıcı özelliği de oluşturulur. Özellik adı, IDENTITY_SOURCE_ID_identity kuralını kullanıyor.

Bu tabloda iki kimlik kaynağı gösterilmektedir: biri SAM hesap adları, diğeri ise kullanıcı kimlikleri (uid) için.

Kimlik kaynağı Kullanıcı mülkü Harici Kimlik
id1 id1_identity sAMAccountName
id2 id2_identity uid

Şirketinizde kullanılan her harici kimlik türü için bir kimlik kaynağı oluşturun.

Bu tabloda, Google Hesabı olan ve iki harici kimliği bulunan bir kullanıcının Cloud Directory'de nasıl göründüğü gösterilmektedir:

Kullanıcı E-posta id1_identity id2_identity
Ayşe ann@example.com example\ann 1001

Dizin oluşturma için erişim kontrol listeleri (ACL) oluştururken bu kimliklerden herhangi birini kullanarak aynı kullanıcıya başvurabilirsiniz.

Kullanıcı EKL'leri yazma

Harici kimlikleri kullanarak asıl kullanıcılar oluşturmak için getUserPrincipal() veya getGroupPrincipal() kullanın.

Bu örnek, erişimi olan kullanıcılar da dahil olmak üzere dosya izinlerini alır:

FilePermissionSample.java
/**
 * Sample for mapping permissions from a source repository to Cloud Search
 * ACLs. In this example, POSIX file permissions are used a the source
 * permissions.
 *
 * @return Acl
 * @throws IOException if unable to read file permissions
 */
static Acl mapPosixFilePermissionToCloudSearchAcl(Path pathToFile) throws IOException {
  // Id of the identity source for external user/group IDs. Shown here,
  // but may be omitted in the SDK as it is automatically applied
  // based on the `api.identitySourceId` configuration parameter.
  String identitySourceId = "abcdef12345";

  // Retrieve the file system permissions for the item being indexed.
  PosixFileAttributeView attributeView = Files.getFileAttributeView(
      pathToFile,
      PosixFileAttributeView.class,
      LinkOption.NOFOLLOW_LINKS);

  if (attributeView == null) {
    // Can't read, return empty ACl
    return new Acl.Builder().build();
  }

  PosixFileAttributes attrs = attributeView.readAttributes();
  // ...
}

Bu snippet, externalUserName özelliğini kullanarak sahipler için asıl öğeler oluşturur:

FilePermissionSample.java