IdM API 사용

Red Hat Enterprise Linux 9

Python 스크립트에서 IdM API 사용

Red Hat Customer Content Services

초록

IdM API에는 다양한 유형의 요청 사용 예가 포함되어 있습니다. 관리자와 개발자는 IdM API를 사용하여 Python에서 사용자 지정 스크립트를 작성하여 타사 애플리케이션과 IdM을 통합할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서 개선을 위한 의견에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (등록 필요)

  1. Jira 웹 사이트에 로그인합니다.
  2. 상단 탐색 모음에서 생성 을 클릭합니다.
  3. 요약 필드에 설명 제목을 입력합니다.
  4. 설명 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  5. 대화 상자 하단에서 생성 을 클릭합니다.

1장. IdM API 소개

명령줄 및 웹 기반 인터페이스를 사용하여 Red Hat Identity Management의 서비스에 액세스할 수 있습니다. Identity Management API를 사용하면 Python으로 작성된 타사 애플리케이션 및 스크립트를 통해 Identity Management 서비스와 상호 작용할 수 있습니다.

Identity Management API에는 JSON-RPC(JavaScript Object Notation Remote Procedure Call) 인터페이스가 있습니다. 다양한 중요한 부분에 자동화를 사용하려면 Python을 통해 Identity Management API에 액세스합니다. 예를 들어 사용 가능한 모든 명령을 사용하여 서버에서 메타데이터를 검색할 수 있습니다.

2장. IdM API의 기본 사항

IdM API를 사용하여 사용자 지정 스크립트로 IdM 환경에 대한 액세스를 자동화할 수 있습니다.

2.1. IdM API 초기화

IdM API를 사용하려면 먼저 환경에서 초기화합니다.

사전 요구 사항

  • IdM 서버 또는 IdM 클라이언트 패키지가 설치되어 있습니다.
  • 유효한 Kerberos 티켓이 발행됩니다.

프로세스

  1. IdM API를 초기화하려면 스크립트 시작 부분에 다음 코드를 포함합니다.

    from ipalib import api
    
    api.bootstrap(context="server")
    api.finalize()
  2. LDAP 서버와의 연결을 설정하려면 API 초기화 후 스크립트에 다음 논리를 추가합니다.

    if api.env.in_server:
        api.Backend.ldap2.connect()
    else:
        api.Backend.rpcclient.connect()
    • IdM 서버에서 스크립트를 실행하는 경우 이 논리를 사용하면 스크립트가 LDAP 서버에 직접 연결할 수 있습니다.
    • IdM 클라이언트에서 스크립트를 실행하는 경우 스크립트는 RPC(원격 프로시저 호출) 클라이언트를 사용합니다.

추가 리소스

2.2. IdM API 명령 실행

스크립트 내에서 IdM API 명령을 실행할 수 있습니다. IdM API 명령을 실행하려면 스크립트에서 api.Command 구조를 사용합니다.

사전 요구 사항

  • IdM API가 초기화됩니다. 자세한 내용은 IdM API 초기화 를 참조하십시오.

프로세스

  • 예를 들어 사용자 정보를 나열하려면 스크립트에 다음 코드를 포함합니다.

    api.Command.user_show("user_name", no_members=True, all=True)

    이 예제에서는 user_show 명령에 인수와 옵션도 전달합니다.

추가 리소스

  • api.Command 명령의 전체 목록은 IPA API 명령 웹 소스를 참조하십시오.

2.3. IdM API 명령 출력 구조

각 IdM API 명령에는 출력에 대한 네 개의 섹션이 있습니다. 이러한 섹션에는 명령 실행에 대한 다양한 정보가 포함되어 있습니다.

IdM API 출력 구조

결과
이 섹션에서는 명령 결과를 제공합니다. 명령에 전달된 옵션 및 인수와 같은 명령 작업에 대한 다양한 세부 정보가 포함되어 있습니다.
이 섹션에서는 명령의 인수를 나타냅니다.
messages
이 섹션에서는 명령을 실행한 후 ipa 툴이 제공하는 다양한 정보를 보여줍니다.
summary
이 섹션에서는 작업에 대한 요약을 보여줍니다.

이 예제에서 스크립트는 add_user 명령을 실행합니다.

api.Command.user_add("test", givenname="a", sn="b")

해당 명령의 출력 구조는 다음과 같습니다.

{
    "result": {
        "displayname": ["a b"],
        "objectclass": [
            "top",
            "person",
            "organizationalperson",
            "inetorgperson",
            "inetuser",
            "posixaccount",
            "krbprincipalaux",
            "krbticketpolicyaux",
            "ipaobject",
            "ipasshuser",
            "ipaSshGroupOfPubKeys",
            "mepOriginEntry",
            "ipantuserattrs",
        ],
        "cn": ["a b"],
        "gidnumber": ["1445000004"],
        "mail": ["test@ipa.test"],
        "krbprincipalname": [ipapython.kerberos.Principal("test@IPA.TEST")],
        "loginshell": ["/bin/sh"],
        "initials": ["ab"],
        "uid": ["test"],
        "uidnumber": ["1445000004"],
        "sn": ["b"],
        "krbcanonicalname": [ipapython.kerberos.Principal("test@IPA.TEST")],
        "homedirectory": ["/home/test"],
        "givenname": ["a"],
        "gecos": ["a b"],
        "ipauniqueid": ["9f9c1df8-5073-11ed-9a56-fa163ea98bb3"],
        "mepmanagedentry": [
            ipapython.dn.DN("cn=test,cn=groups,cn=accounts,dc=ipa,dc=test")
        ],
        "has_password": False,
        "has_keytab": False,
        "memberof_group": ["ipausers"],
        "dn": ipapython.dn.DN("uid=test,cn=users,cn=accounts,dc=ipa,dc=test"),
    },
    "value": "test",
    "messages": [
        {
            "type": "warning",
            "name": "VersionMissing",
            "message": "API Version number was not sent, forward compatibility not guaranteed. Assuming server's API version, 2.248",
            "code": 13001,
            "data": {"server_version": "2.248"},
        }
    ],
    "summary": 'Added user "test"',
}

2.4. IdM API 명령 및 매개변수 나열

command_showparam_show 명령을 사용하여 IdM API 명령 및 해당 매개변수에 대한 정보를 나열할 수 있습니다.

사전 요구 사항

  • IdM API가 초기화됩니다. 자세한 내용은 IdM API 초기화 를 참조하십시오.

프로세스

  1. user_add 명령에 대한 정보를 표시하려면 다음 코드를 실행합니다.

    api.Command.command_show("user_add")

    이 명령의 결과는 다음과 같습니다.

    {
        "result": {
            "name": "user_add",
            "version": "1",
            "full_name": "user_add/1",
            "doc": "Add a new user.",
            "topic_topic": "user/1",
            "obj_class": "user/1",
            "attr_name": "add",
        },
        "value": "user_add",
        "messages": [
            {
                "type": "warning",
                "name": "VersionMissing",
                "message": "API Version number was not sent, forward compatibility not guaranteed. Assuming server's API version, 2.251",
                "code": 13001,
                "data": {"server_version": "2.251"},
            }
        ],
        "summary": None,
    }
  2. user_add 명령의 givenname 매개변수에 대한 정보를 표시하려면 다음 코드를 실행합니다.

    api.Command.param_show("user_add", name="givenname")

    이 명령의 결과는 다음과 같습니다.

    {
        "result": {
            "name": "givenname",
            "type": "str",
            "positional": False,
            "cli_name": "first",
            "label": "First name",
        },
        "value": "givenname",
        "messages": [
            {
                "type": "warning",
                "name": "VersionMissing",
                "message": "API Version number was not sent, forward compatibility not guaranteed. Assuming server's API version, 2.251",
                "code": 13001,
                "data": {"server_version": "2.251"},
            }
        ],
        "summary": None,
    }

2.5. 배치를 사용하여 IdM API 명령 실행

batch 명령을 사용하여 단일 호출을 사용하여 여러 IdM API 명령을 실행할 수 있습니다. 다음 예제에서는 여러 IdM 사용자를 생성하는 방법을 보여줍니다.

사전 요구 사항

  • IdM API가 초기화됩니다. 자세한 내용은 IdM API 초기화 를 참조하십시오.

프로세스

  • 하나의 배치에 100명의 IdM 사용자를 생성하려면 다음 코드를 스크립트에 포함합니다.

    batch_args = []
    for i in range(100):
        user_id = "user%i" % i
        args = [user_id]
        kw = {
            'givenname' : user_id,
            'sn' : user_id
        }
        batch_args.append({
            'method' : 'user_add',
            'params' : [args, kw]
        })
    ret = api.Command.batch(*batch_args)

2.6. IdM API 컨텍스트

IdM API 컨텍스트는 API에서 사용하는 플러그인을 결정합니다. API 초기화 중에 컨텍스트를 지정합니다. IdM API 컨텍스트를 사용하는 방법에 대한 예제는 IdM API 초기화 를 참조하십시오.

IdM API 컨텍스트

server
실행을 위해 IdM API 명령에 전달되는 인수 및 옵션의 유효성을 검사하는 플러그인 세트입니다.
클라이언트
실행을 위해 IdM 서버로 전달되는 인수 및 옵션의 유효성을 검사하는 플러그인 세트입니다.
installer
설치 프로세스와 관련된 플러그인 세트입니다.
업데이트
업데이트 프로세스와 관련된 플러그인 세트입니다.

3장. IdM API 및 IdM CLI 명령 비교

Python 대화형 콘솔에서 IdM API 명령을 사용할 수 있습니다. IdM API 명령은 ipa 툴 명령과 다릅니다.

IdM CLI 및 IdM API 명령 차이점

명령 이름 지정 구조
ipa CLI 명령은 user-add 에서와 같이 하이픈을 사용하지만 IdM API 명령은 user_add 에서와 같이 밑줄을 대신 사용합니다.
매개변수 이름 지정
IdM CLI 명령 및 IdM API 명령에는 매개변수가 다릅니다. 예를 들어 IdM CLI user-add 명령에는 먼저 매개변수가 있지만 IdM API user_add 명령에는 매개 변수 지정 이름이 있습니다.
날짜 형식

IdM CLI에는 다음 날짜 형식을 사용할 수 있습니다.

  • %Y%m%d%H%M%SZ
  • %Y-%m-%dT%H:%M:%SZ
  • %Y-%m-%dT%H:%MZ
  • %Y-%m-%dZ
  • %Y-%m-%d %H:%M:%SZ
  • %Y-%m-%d %H:%MZ

    또한 IdM API는 Python 기본 제공 클래스 date를 사용할 수 있습니다.

유용한 CLI 툴

  • 콘솔 은 IdM API 명령을 실행하는 데 사용할 수 있는 대화형 Python 콘솔을 시작합니다.
  • help 명령은 주제 및 명령에 대한 설명을 표시하고 다양한 예제를 포함합니다.
  • show-mapping 명령은 CLI 매개변수 이름과 LDAP 속성 간의 매핑을 표시합니다.

4장. IdM API 예제 시나리오

다음 예제에서는 IdM API 명령을 사용하는 일반적인 시나리오를 제공합니다.

4.1. IdM API 명령으로 사용자 관리

아래 예제에서는 IdM API 명령을 사용하여 IdM 사용자를 관리하는 방법에 대한 일반적인 시나리오를 보여줍니다.

IdM API 명령을 사용하여 IdM 사용자를 관리하는 예

IdM 사용자 생성

이 예제에서는 사용자 이름 exampleuser 및 지원되는 사용자 일회성 암호(OTP) 인증을 사용하여 IdM 사용자를 생성합니다.

api.Command.user_add("exampleuser", givenname="Example", sn="User", ipauserauthtype="otp")
IdM 사용자 정보 표시

이 예제에서는 IdM 사용자 exampleuser 에 대한 사용 가능한 모든 정보를 표시합니다.

api.Command.user_show("exampleuser", all=True)
IdM 사용자 수정

이 예에서는 IdM 사용자 exampleuser 의 이메일 주소를 변경합니다.

api.Command.user_mod("exampleuser", mail="exampleuser@example.org")
IdM 사용자 검색

이 예에서는 IdM 그룹 admins 에서 exampleuser 와 일치하는 모든 IdM 사용자를 검색합니다.

api.Command.user_find(criteria="exampleuser", in_group="admins")
IdM 사용자 삭제

이 예에서는 IdM 사용자 exampleuser 를 삭제합니다.

api.Command.user_del("exampleuser")

나중에 사용자를 복원하려면 preserve 옵션을 사용합니다. 이 옵션을 사용하는 경우 user_undel 명령을 사용하여 사용자를 복원할 수 있습니다.

IdM 사용자의 인증서 추가 및 제거

user_add_certuser_remove_cert 명령을 사용하여 사용자에 대해 Base64 인코딩 인증서를 추가하거나 제거할 수 있습니다. 이 예에서는 exampleuser 사용자에 대한 인증서를 추가합니다.

args = ["exampleuser"]
kw = {
    "usercertificate": """
      MIICYzCCAcygAwIBAgIBADANBgkqhkiG9w0BAQUFADAuMQswCQYDVQQGEwJVUzEMMAoGA1UEC
      hMDSUJNMREwDwYDVQQLEwhMb2NhbCBDQTAeFw05OTEyMjIwNTAwMDBaFw0wMDEyMjMwNDU5NT
      laMC4xCzAJBgNVBAYTAlVTMQwwCgYDVQQKEwNJQk0xETAPBgNVBAsTCExvY2FsIENBMIGfMA0
      GCSqGSIb3DQEBATOPA4GNADCBiQKBgQD2bZEo7xGaX2/0GHkrNFZvlxBou9v1Jmt/PDiTMPve
      8r9FeJAQ0QdvFST/0JPQYD20rH0bimdDLgNdNynmyRoS2S/IInfpmf69iyc2G0TPyRvmHIiOZ
      bdCd+YBHQi1adkj17NDcWj6S14tVurFX73zx0sNoMS79q3tuXKrDsxeuwIDAQABo4GQMIGNME
      sGCVUdDwGG+EIBDQQ+EzxHZW5lcmF0ZWQgYnkgdGhlIFNlY3VyZVdheSBTZWN1cml0eSBTZXJ
      2ZXIgZm9yIE9TLzM5MCAoUkFDRikwDgYDVR0PAQH/BAQDAgAGMA8GA1UdEwEB/wQFMAMBAf8w
      HQYDVR0OBBYEFJ3+ocRyCTJw067dLSwr/nalx6YMMA0GCSqGSIb3DQEBBQUAA4GBAMaQzt+za
      j1GU77yzlr8iiMBXgdQrwsZZWJo5exnAucJAEYQZmOfyLiMD6oYq+ZnfvM0n8G/Y79q8nhwvu
      xpYOnRSAXFp6xSkrIOeZtJMY1h00LKp/JX3Ng1svZ2agE126JHsQ0bhzN5TKsYfbwfTwfjdWA
      Gy6Vf1nYi/rO+ryMO
    """
}

api.Command.user_add_cert(*args, **kw)
IdM 사용자 활성화 및 비활성화

user_enableuser_disable 명령을 사용하여 IdM 사용자를 활성화하거나 비활성화할 수 있습니다. 이 예에서는 IdM 사용자 exampleuser 를 비활성화합니다.

api.Command.user_disable("exampleuser")

4.2. IdM API 명령으로 그룹 관리

아래 예제에서는 IdM API 명령을 사용하여 IdM 그룹을 관리하는 방법에 대한 일반적인 시나리오를 보여줍니다.

IdM API 명령을 사용하여 IdM 사용자를 관리하는 예

IdM 그룹 생성

이 예에서는 지정된 그룹 ID 번호를 사용하여 IdM 그룹 개발자 를 생성합니다.

api.Command.group_add("developers", gidnumber=500, description="Developers")
IdM 그룹에 사용자로 멤버로 추가

이 예제에서는 admin 사용자를 developers 그룹에 추가합니다.

api.Command.group_add_member("developers", user="admin")
IdM 그룹에 멤버로 서비스 추가

이 예제에서는 HTTP/server.ipa.test 서비스를 developers 그룹에 추가합니다.

api.Command.group_add_member("developers", service="HTTP/server.ipa.test")
IdM 그룹에 하위 그룹으로 그룹 추가

이 예제에서는 developers 그룹에 다른 그룹 admins 를 추가합니다.

api.Command.group_add_member("developers", group="admins")
IdM 그룹 관리자 추가

이 예제에서는 bob 사용자를 developers 그룹의 그룹 관리자로 추가합니다.

api.Command.group_add_member_manager("developers", user="bob")
IdM 그룹 검색

다양한 매개변수를 사용하여 IdM 그룹을 검색할 수 있습니다. 이 예제에서는 사용자 bob 이 관리하는 모든 그룹을 찾습니다.

api.Command.group_find(membermanager_user="bob")
IdM 그룹 정보 표시

이 예제에서는 members 목록 없이 developers 그룹에 대한 그룹 정보를 표시합니다.

api.Command.group_show("developers", no_members=True)
IdM 그룹 수정

이 예에서는 비POSIX 그룹 testgroup 을 POSIX 그룹으로 변환합니다.

api.Command.group_mod("testgroup", posix=True)
IdM 그룹에서 멤버 제거

이 예에서는 developers 그룹에서 admin 사용자를 제거합니다.

api.Command.group_remove_member("developers", user="admin")
IdM 그룹 관리자 제거

이 예제에서는 developers 그룹에서 관리자로서 사용자 bob 을 제거합니다.

api.Command.group_remove_member_manager("developers", user="bob")
IdM 그룹 제거

이 예제에서는 developers 그룹을 제거합니다.

api.Command.group_del("developers")

4.3. IdM API 명령으로 액세스 제어 관리

아래 예제에서는 IdM API 명령을 사용하여 액세스 제어를 관리하는 방법에 대한 일반적인 시나리오를 보여줍니다.

IdM API 명령을 사용하여 액세스 제어를 관리하는 예

사용자 생성에 대한 권한 추가

이 예제에서는 사용자를 생성할 수 있는 권한을 추가합니다.

api.Command.permission_add("Create users", ipapermright='add', type='user')
그룹 멤버십 관리에 대한 권한 추가

이 예제에서는 그룹에 사용자를 추가할 수 있는 권한을 추가합니다.

api.Command.permission_add("Manage group membership", ipapermright='write', type='group', attrs="member")
사용자 생성 프로세스에 대한 권한 추가

이 예제에서는 사용자를 생성하고, 그룹에 추가하고, 사용자 인증서를 관리하는 데 필요한 권한을 추가합니다.

api.Command.permission_add("Create users", ipapermright='add', type='user')
api.Command.permission_add("Manage group membership", ipapermright='write', type='group', attrs="member")
api.Command.permission_add("Manage User certificates", ipapermright='write', type='user', attrs='usercertificate')

api.Command.privilege_add("User creation")
api.Command.privilege_add_permission("User creation", permission="Create users")
api.Command.privilege_add_permission("User creation", permission="Manage group membership")
api.Command.privilege_add_permission("User creation", permission="Manage User certificates")
권한을 사용하여 역할 추가

이 예제에서는 이전 예제에서 생성한 권한을 사용하여 역할을 추가합니다.

api.Command.role_add("usermanager", description="Users manager")
api.Command.role_add_privilege("usermanager", privilege="User creation")
사용자에게 역할 할당

이 예제에서는 사용자 bobusermanager 역할을 할당합니다.

api.Command.role_add_member("usermanager", user="bob")
그룹에 역할 할당

이 예에서는 usermanager 역할을 managers 그룹에 할당합니다.

api.Command.role_add_member("usermanager", group="managers")

4.4. IdM API 명령을 사용하여 sudo 규칙 관리

아래 예제에서는 IdM API 명령을 사용하여 sudo 규칙을 관리하는 방법에 대한 일반적인 시나리오를 보여줍니다.

IdM API 명령을 사용하여 sudo 규칙을 관리하는 예

sudo 규칙 생성

이 예제에서는 시간 변경 명령을 포함하는 sudo 규칙을 만듭니다.

api.Command.sudorule_add("timechange")
sudo 명령 생성

이 예제에서는 date sudo 명령을 만듭니다.

api.Command.sudocmd_add("/usr/bin/date")
sudo 규칙에 sudo 명령 연결

이 예제에서는 date sudo 명령을 timechange sudo 규칙에 연결합니다.

api.Command.sudorule_add_allow_command("timechange", sudocmd="/usr/bin/date")
sudo 명령 그룹 생성 및 연결

이 예제에서는 여러 sudo 명령을 만들고 새로 생성된 timecmds sudo 명령 그룹에 추가한 후 그룹을 timechange sudo 규칙에 연결합니다.

api.Command.sudocmd_add("/usr/bin/date")
api.Command.sudocmd_add("/usr/bin/timedatectl")
api.Command.sudocmd_add("/usr/sbin/hwclock")
api.Command.sudocmdgroup_add("timecmds")
api.Command.sudocmdgroup_add_member("timecmds", sudocmd="/usr/bin/date")
api.Command.sudocmdgroup_add_member("timecmds", sudocmd="/usr/bin/timedatectl")
api.Command.sudocmdgroup_add_member("timecmds", sudocmd="/usr/sbin/hwclock")
api.Command.sudorule_add_allow_command("timechange", sudocmdgroup="timecmds")
sudo 명령 거부

이 예제에서는 rm 명령이 sudo로 실행되도록 거부합니다.

api.Command.sudocmd_add("/usr/bin/rm")
api.Command.sudorule_add_deny_command("timechange", sudocmd="/usr/bin/rm")
sudo 규칙에 사용자 추가

이 예제에서는 사용자 bobtimechange sudo 규칙에 추가합니다.

api.Command.sudorule_add_user("timechange", user="bob")
지정된 호스트에서만 sudo 규칙을 사용할 수 있도록 설정

이 예에서는 client.ipa.test 호스트에서만 사용할 수 있도록 시간 변경 규칙을 제한합니다.

api.Command.sudorule_add_host("timechange", host="client.ipa.test")
sudo 규칙을 다른 사용자로 실행하도록 설정

기본적으로 sudo 규칙은 root 로 실행됩니다. 이 예제에서는 대신 alice 사용자로 실행할 timechange sudo 규칙을 설정합니다.

api.Command.sudorule_add_runasuser("timechange", user="alice")
sudo 규칙을 그룹으로 실행하도록 설정

이 예제에서는 sysadmins 그룹으로 실행되도록 timechange sudo 규칙을 설정합니다.

api.Command.sudorule_add_runasgroup("timechange", group="sysadmins")
sudo 규칙에 대한 sudo 옵션 설정

이 예제에서는 timechange sudo 규칙에 대해 sudo 옵션을 설정합니다.

api.Command.sudorule_add_option("timechange", ipasudoopt="logfile='/var/log/timechange_log'")
sudo 규칙 활성화

이 예제에서는 timechange sudo 규칙을 활성화합니다.

api.Command.sudorule_enable("timechange")
sudo 규칙 비활성화

이 예제에서는 timechange sudo 규칙을 비활성화합니다.

api.Command.sudorule_disable("timechange")

4.5. IdM API 명령을 사용하여 호스트 기반 액세스 제어 관리

아래 예제에서는 IdM API 명령을 사용하여 HBAC(Host-based Access Control)를 관리하는 방법에 대한 일반적인 시나리오를 보여줍니다.

IdM API 명령을 사용하여 HBAC를 관리하는 예

HBAC 규칙 생성

이 예제에서는 SSH 서비스 액세스를 처리할 기본 규칙을 생성합니다.

api.Command.hbacrule_add("sshd_rule")
HBAC 규칙에 사용자 추가

이 예제에서는 사용자 johnsshd_rule HBAC 규칙에 추가합니다.

api.Command.hbacrule_add_user("sshd_rule", user="john")
HBAC 규칙에 그룹 추가

이 예제에서는 그룹 developerssshd_rule HBAC 규칙에 추가합니다.

api.Command.hbacrule_add_user("sshd_rule", group="developers")
HBAC 규칙에서 사용자 제거

이 예에서는 sshd_rule HBAC 규칙에서 john 사용자를 제거합니다.

api.Command.hbacrule_remove_user("sshd_rule", user="john")
새 대상 HBAC 서비스 등록

HBAC 규칙에 연결하려면 먼저 대상 서비스를 등록해야 합니다. 이 예에서는 chronyd 서비스를 등록합니다.

api.Command.hbacsvc_add("chronyd")
HBAC 규칙에 등록된 서비스 연결

이 예에서는 sshd 서비스를 sshd_rule HBAC 규칙에 연결합니다. 이 서비스는 기본적으로 IPA에 등록되므로 사전에 hbacsvc_add 를 사용하여 등록할 필요가 없습니다.

api.Command.hbacrule_add_service("sshd_rule", hbacsvc="sshd")
HBAC 규칙에 호스트 추가

이 예에서는 workstations 호스트 그룹을 sshd_rule HBAC 규칙에 추가합니다.

api.Command.hbacrule_add_host("sshd_rule", hostgroup="workstations")
HBAC 규칙 테스트

이 예에서는 workstation.ipa.test 호스트에 대해 sshd_rule HBAC 규칙을 사용합니다. 사용자 john 에서 제공되는 서비스 sshd 를 대상으로 합니다.

api.Command.hbactest(user="john", targethost="workstation.ipa.test", service="sshd", rules="sshd_rule")
HBAC 규칙 활성화

이 예제에서는 sshd_rule HBAC 규칙을 활성화합니다.

api.Command.hbacrule_enable("sshd_rule")
HBAC 규칙 비활성화

이 예제에서는 sshd_rule HBAC 규칙을 비활성화합니다.

api.Command.hbacrule_disable("sshd_rule")

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.